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

为何在AWS EC2实例发起HTTP请求未触发CORS错误?

问题解答

核心原因:Nginx替你完成了CORS逻辑,绕过了Express的默认限制

  • Postman本身不强制校验CORS:CORS是浏览器专属的安全校验机制,像Postman这类API测试工具不会主动拦截跨域请求——哪怕响应里没有CORS头,工具也能正常接收结果。你用Postman测试没报错,这是工具特性导致的。
  • Nginx配置已经完整实现CORS支持:你的Nginx配置里,不仅添加了Access-Control-Allow-Origin等所有必要的CORS响应头,还专门处理了OPTIONS预请求。当请求打到EC2时,先经过Nginx,Nginx直接给客户端返回了符合CORS要求的响应头,根本轮不到Express处理跨域逻辑。Express默认只是不返回CORS头,但Nginx提前补上了这些头,浏览器或工具收到后就认为跨域被允许,自然不会报错。
  • Express的“默认拦截”是误解:你以为Express会主动拦截跨域请求,但实际上它只是不添加CORS响应头,不会主动拒绝请求。真正的拦截是浏览器收到无CORS头的响应后,才会抛出跨域错误。现在Nginx已经把这些头补上了,所以不会触发错误。

如果要让跨域请求被拦截,你需要删除Nginx配置中所有和CORS相关的代码:包括add_header的CORS头、OPTIONS请求的处理逻辑。这样请求到达Express后,响应里没有CORS头,浏览器里的前端请求就会被拦截(Postman这类工具仍可能正常返回,但浏览器端会报错)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:46:18