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

使用Ajax发起跨域请求仍触发CORS policy错误,该如何解决?

问题原因
  • Access-Control-Allow-Origin 属于HTTP响应头,由服务端返回时才生效,你在前端Ajax请求的请求头中添加该字段属于错误用法,反而会导致请求被判定为非简单请求触发OPTIONS预检,只要服务端未适配预检规则就会直接被CORS策略拦截。
  • CORS的校验逻辑由浏览器强制执行,权限完全归属服务端,前端单方面修改请求配置无法绕过同源策略限制,必须由服务端返回符合要求的CORS响应头才能正常发起跨域请求。
  • 当前请求设置的Content-Type: application/json不属于简单请求允许的Content-Type范围,本身就会触发预检请求,若服务端未处理OPTIONS类型的请求,也会直接触发CORS报错。
修复方案
  • 先删除前端请求头中错误添加的Access-Control-Allow-Origin字段,该字段不需要前端携带。
  • 联系服务端开发人员配置CORS规则,要求服务端针对该接口的请求(含OPTIONS预检请求)返回以下响应头:

    Access-Control-Allow-Origin: *
    Access-Control-Allow-Methods: POST, OPTIONS
    Access-Control-Allow-Headers: Content-Type, accept
    同时服务端需要对OPTIONS预检请求直接返回200/204状态码,不要做鉴权等业务逻辑拦截。如果需要更高的安全性,可将Access-Control-Allow-Origin的值替换为你前端站点的实际域名,而非使用通配符。

  • 若仅为本地调试使用,可临时使用浏览器跨域插件绕过CORS限制,或配置前端开发服务的代理能力(如Webpack的devServer.proxy、Vite的server.proxy)转发请求,该类方案仅适用于本地开发场景,生产环境仍需服务端配置CORS规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 16:54:04