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

如何解决AWS Lambda后端与Cloudflare前端的CORS错误?

解决Cloudflare前端对接AWS Lambda+API Gateway的CORS错误

排查方向1:API Gateway与Lambda代码的CORS配置冲突

如果已在API Gateway控制台开启CORS配置,会和Lambda代码里手动设置的CORS头重复,触发浏览器报错:

  • 登录AWS API Gateway控制台,找到目标API进入资源页面,点击启用CORS:
    • 将Access-Control-Allow-Origin设为https://greentogether.pages.dev
    • 勾选Access-Control-Allow-Credentials选项
    • 填写与代码一致的允许方法和请求头
  • 部署API到对应阶段后,删除Lambda代码中重复的CORS中间件和OPTIONS路由,避免头信息冲突。

排查方向2:调整Lambda代码的请求处理顺序

当前代码中,body解析中间件可能先于OPTIONS请求处理导致报错,调整顺序确保OPTIONS路由优先匹配:

const express = require('express')
const serverless = require('serverless-http')
const app = express()

// 优先处理OPTIONS预检请求
app.options('*', (req, res) => {
  res.header('Access-Control-Allow-Origin', 'https://greentogether.pages.dev');
  res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type,Authorization');
  res.header('Access-Control-Allow-Credentials', 'true');
  res.sendStatus(200);
});

// 全局CORS头设置
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', 'https://greentogether.pages.dev');
  res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type,Authorization');
  res.header('Access-Control-Allow-Credentials', 'true');
  next();
});

// 最后加载body解析中间件
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

module.exports.handler = serverless(app)

排查方向3:Cloudflare缓存或边缘规则干扰

Cloudflare Pages可能缓存OPTIONS请求的旧响应,导致CORS头不生效:

  • 进入Cloudflare控制台的Pages项目,在缓存设置中,将OPTIONS请求的浏览器缓存TTL设为0,或直接禁用该路径的缓存
  • 检查自定义边缘规则,确保未修改或覆盖CORS相关响应头

排查方向4:凭证传递的细节校验

如果前端请求携带凭证(如Cookie),需确保:

  • 前端请求配置credentials: 'include'(fetch/axios均需设置)
  • Lambda返回的Access-Control-Allow-Origin为明确域名(不能用通配符*,你已满足此要求)
  • API Gateway的CORS配置中已勾选允许凭证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 00:22:42