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

AWS API Gateway对接EC2 NodeJS应用的CORS问题求助

解决API Gateway对接EC2 NodeJS应用的CORS问题
  • 核心原因:API Gateway的CORS配置通常仅自动处理OPTIONS预检请求,但实际业务请求(GET/POST等)的Access-Control-Allow-Origin等CORS头,需要由EC2上的NodeJS应用主动返回,浏览器才会认可响应内容。

  • 具体修复步骤:

    1. 在NodeJS应用中添加CORS处理(以Express框架为例):
      先安装CORS依赖包:
      npm install cors
      
      在Express应用中引入并配置:
      const express = require('express');
      const cors = require('cors');
      const app = express();
      
      // 生产环境建议指定前端域名,测试环境可临时用*允许所有
      app.use(cors({
        origin: 'http://localhost:3000' // 替换为你的React应用运行地址
      }));
      
      // 业务路由示例
      app.get('/', (req, res) => {
        res.send('EC2 NodeJS应用响应');
      });
      
      app.listen(3000, () => {
        console.log('服务运行在3000端口');
      });
      
    2. 确认API Gateway部署状态:修改CORS配置后必须重新部署API,否则新配置不会生效。
    3. 检查axios请求:无需额外特殊配置,确保请求地址是API Gateway的部署域名,而非直接访问EC2的IP/域名。
  • 状态码200仍报错的原因:浏览器的CORS校验优先级高于响应内容,只要响应头缺少必要的CORS字段,即使返回200和正确内容,也会被浏览器拦截并抛出跨域错误。

  • 额外排查项:

    • 检查EC2安全组,确认允许API Gateway的IP段访问NodeJS应用的端口。
    • 用浏览器开发者工具的「网络」标签,查看实际请求的响应头,确认是否存在Access-Control-Allow-Origin字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 10:53:25