You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

axios请求API报CORS policy: Request header field token is not allowed错误求助

错误原因
  • CORS是浏览器内置的同源安全限制策略,仅作用于浏览器端发起的跨域请求,Postman等桌面客户端不受该策略约束,因此请求可以正常返回。
  • 你的请求属于需要预检的CORS请求:跨域场景下携带了自定义请求头token,浏览器会先发送OPTIONS类型的预检请求到目标API,校验请求权限。
  • 目标API返回的预检响应中,Access-Control-Allow-Headers字段未将token纳入允许的请求头列表,因此浏览器直接拦截请求,抛出对应错误。

额外注意:你代码中配置的身份头为Authorization,但你描述接口要求的身份头名为Authentication,如果接口确实要求后者,需要先修正头名配置,避免后续身份校验失败。

解决方案

方案1:调整目标API的CORS配置(最推荐)

如果你有权限修改目标API的服务配置,直接在CORS规则的允许请求头列表中新增token即可:

  • 若用Nginx做接口代理,在对应location配置块中添加:
add_header Access-Control-Allow-Headers "Authorization, token, Content-Type, Accept";
  • 若后端代码中配置CORS(如Node.js的cors包、Java的CorsRegistry等),同样将token加入允许的请求头列表即可。

方案2:前端侧绕过CORS限制(无API修改权限时使用)

本地开发场景

用前端构建工具的代理服务转发请求,规避跨域限制,以webpack devServer配置为例:

devServer: {
  proxy: {
    '/api': {
      target: 'https://pay.apiname.com.br',
      changeOrigin: true,
      pathRewrite: { '^/api': '' }
    }
  }
}

修改axios的baseURL为/api,所有请求都会由本地开发服务转发,不会触发CORS。

生产环境场景

  • 方案A:将前端页面和目标API部署到同一个域名下,不存在跨域问题。
  • 方案B:新增一层后端代理服务,前端先请求你自己的后端服务,再由后端服务转发请求到目标API,服务端之间的请求不受CORS限制。

内容的提问来源于stack exchange,提问作者Fred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:24:04