如何在API Gateway控制台禁用CORS功能?
本地测试禁用CORS的操作方案
- 浏览器临时关闭CORS安全策略(仅用于开发测试,禁止日常浏览网页时开启)
Chrome/Edge内核浏览器:完全关闭所有运行中的浏览器进程后,使用以下带参数的命令启动:
Windows:"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:\chrome_dev_temp"
MacOS:open -n /Applications/Google\ Chrome.app --args --disable-web-security --user-data-dir=/tmp/chrome_dev_test
启动后浏览器顶部会提示存在安全风险,此时所有跨域请求不会被CORS策略拦截。
火狐浏览器:地址栏输入about:config进入高级配置页,搜索security.fileuri.strict_origin_policy,将参数值修改为false即可临时关闭同源校验。 - 本地开发代理转发
前端本地开发阶段可通过脚手架自带的代理功能转发请求规避跨域。例如Vue项目在vue.config.js中配置devServer.proxy规则,React项目在package.json中添加proxy字段,将接口请求路径代理到目标服务端地址,同源环境下不会触发CORS校验。 - 服务端完整CORS配置(若需正常开启CORS而非禁用)
仅配置Access-Control-Allow-Origin: '*'无法覆盖所有请求场景,还需要针对OPTIONS预检请求做单独处理:- 返回
Access-Control-Allow-Methods头,声明允许的请求方法(如GET、POST、PUT、DELETE等) - 返回
Access-Control-Allow-Headers头,声明允许的自定义请求头 - 直接给OPTIONS请求返回200/204状态码,避免被业务鉴权逻辑拦截
- 返回
来自源'http://localhost:8080'的请求已被CORS策略拦截:预检请求的响应未通过访问控制检查:所请求的资源上不存在'Access-Control-Allow-Origin'标头
上述报错就是由于服务端未正确处理OPTIONS类型的预检请求,未返回对应CORS头导致的。
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

