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

如何在两个AWS Elastic Beanstalk服务器之间允许CORS跨域?

可能导致该问题的Elastic Beanstalk相关原因及排查方案
  • CORS origin匹配规则问题
    你当前配置的origin值末尾携带斜杠"https://www.petsource.app/",而浏览器发起跨域请求时携带的Origin请求头默认不带末尾斜杠(值为https://www.petsource.app),cors包默认采用严格相等匹配规则,会匹配失败导致CORS校验不通过。可修改配置为去掉末尾斜杠的版本,或是使用正则匹配兼容两种格式:
// 方案1:去掉末尾斜杠
app.use(cors({
    origin: "https://www.petsource.app"
}));
// 方案2:正则兼容两种格式
app.use(cors({
    origin: /^https:\/\/www\.petsource\.app\/?$/
}));
  • EB反向代理覆盖/移除CORS响应头
    Elastic Beanstalk的Node.js等托管运行时默认会前置Nginx作为反向代理,默认配置可能会抹除应用返回的自定义响应头,导致CORS头无法正常返回给浏览器。
    排查方法:登录EB实例,直接向应用本地监听端口(通常为3000、8080等)发起curl请求查看响应头是否携带Access-Control-Allow-Origin,再向外网域名发起请求对比,如果公网请求没有对应头,需要新增Nginx自定义配置保留CORS相关响应头。
  • 预检请求被EB链路拦截
    非简单POST请求(比如携带application/json类型请求体、自定义请求头)会先触发OPTIONS类型的预检请求,Elastic Beanstalk链路的多个组件都可能拦截该请求:
    • 负载均衡(ALB)的监听器规则是否允许OPTIONS方法
    • WAF规则是否拦截了OPTIONS请求
    • 服务端代码如果没有默认处理OPTIONS请求,可以在cors配置后新增app.options('*', cors())统一处理所有预检请求
  • EB环境变量覆盖配置
    如果你的CORS origin值是通过环境变量读取的,可登录EB控制台进入对应环境的「配置」-「软件」栏目,检查环境变量中配置的origin值是否和预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:36:03