EdgeOne CORS 跨域代理
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_a05442c3/edgeone-function。
技能介绍
问题背景
EdgeOne Pages 托管的静态站点在浏览器里直接 fetch 第三方 API(例如百度 AI 的 OAuth)时,请求往往被同源策略拦住,控制台出现 CORS Error。前端无法改对方服务器的响应头,单靠静态托管也绕不开这条线。
技能如何工作
本技能围绕 Edge Function 作反向代理:浏览器只访问你站点下的路径(如 /api/token),由 Edge Function 在边缘侧转发到真实 API,并在响应里带上 Access-Control-Allow-Origin 等 CORS 头。
典型步骤包括:
- 在项目根目录按约定放置
edge-functions目录与路由文件(如api/token.js) - 在函数里组装上游 URL、请求方法与 body,读取上游响应后统一加上 CORS 头再返回
- 凭证放在
context.env或控制台环境变量,不要在页面或仓库里硬编码client_secret、API Key - 参考
demo/中的index.html与demo/edge-functions/api/token.js完成本地预览与部署
部署后,前端请求同源代理路径即可拿到 Access Token 等数据,而敏感密钥始终留在服务端。
适用边界与注意点
- 生产环境务必用环境变量;本地可用配置文件,但勿提交敏感信息。
- 未配置凭证时应先检查并返回明确错误,避免盲目打上游接口。
- CORS 头在成功与失败响应里都要一致;
Access-Control-Allow-Origin生产环境建议收窄到具体域名,而不是长期*。 - 技能提供的是代理与 CORS 模板思路,具体上游 API 的路径、鉴权方式需按各厂商文档自行调整。
使用场景
- 在 EdgeOne Pages 上线的活动页需要浏览器侧调用百度 AI,但直连 OAuth 接口被 CORS 拦截
- 静态前端要拿第三方 Access Token,又不能把 client_secret 写进页面或打包产物
- 已有 EdgeOne 项目,希望用 `/api/*` 同源路径代理 POST 到外部 REST API
- 本地用 demo 跑通 token 代理与 CORS 头后,再按同样结构部署到 EdgeOne 生产环境
适合人员
- 在 EdgeOne Pages 托管官网或 H5、需对接百度等第三方 API 的前端工程师
- 负责 EdgeOne 边缘函数与 Pages 联调、要统一处理跨域与密钥存放的全栈或运维开发
- 把静态站点从其他平台迁到 EdgeOne、原先靠自建 Node 代理现在要改成 Edge Function 的维护者
- 写浏览器端 AI 演示页、必须走服务端换 Token 且遵守「密钥不进前端」规范的安全敏感项目同学