Axios请求Node/Express后端出现CORS错误及请求不一致问题
线上部署后CORS及API请求异常排查问题
问题背景
从AWS Amplify部署的React前端,通过EC2弹性负载均衡器向AWS EC2上的Node/Express后端发起安全API调用,使用Auth0做身份验证。本地开发环境一切正常,但部署到线上后出现异常。已修复Bearer令牌附加等问题,但仍存在持续异常。
异常现象
- 怀疑axios同时发送预检OPTIONS请求和GET请求,导致GET请求失败
- 快速切换页面时,最终会有一个延迟的GET请求成功,且该请求没有单独的预检OPTIONS请求
- Chrome控制台报错:
Access to XMLHttpRequest at 'https://api.DOMAIN/api/requirementgroups' from origin 'https://www.DOMAIN' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
请求日志差异详情
- 预检请求(09:41:29):请求头无身份验证令牌,响应头包含
access-control-allow-methods: GET,HEAD,PUT,PATCH,POST,DELETE; access-control-allow-headers: authorization - 失败的GET请求(09:41:29):请求头含身份验证令牌,响应头为
content-length: 524 content-type: text/html date: Thu, 16 Mar 2023 09:41:29 GMT server: awselb/2.0 - 成功的GET请求(09:41:31):请求头含身份验证令牌,响应头包含
access-control-allow-methods: GET, OPTIONS; access-control-allow-headers: Content-Type, Authorization
当前服务器CORS配置
app.options('*', cors()); app.use((req, res, next) => { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); next(); });
已查阅StackOverflow大量类似问题,但未找到根源,希望能排查出可能的低级错误。
内容的提问来源于stack exchange,提问作者Oliver Trampleasure
相关产品推荐
相关产品推荐

