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

API Gateway、Lambda、Cognito的CORS问题:预检请求未返回HTTP成功状态

问题

遇到CORS错误:对预检请求的响应未通过访问控制检查:未返回HTTP成功状态。

本地请求代码:

var myHeaders = new Headers();
myHeaders.append("Authorization", "TOKEN");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("https://XXXXXX.execute-api.us-east-1.amazonaws.com/dev?text=india", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

相关配置与测试情况:

  • 已在API Gateway中启用CORS(配置了OPTIONS方法的CORS规则)
  • 使用代理集成的Lambda返回内容正常
  • GET请求不带Authorization头时,本地代码运行正常
  • Postman中携带Authorization头调用API可正常返回结果
解决方案
  1. 检查API Gateway的OPTIONS方法配置,确保Access-Control-Allow-Headers字段包含Authorization。因为请求携带自定义头(Authorization属于非简单请求头)时,浏览器预检请求要求明确允许该头。
  2. 确认OPTIONS方法的响应状态码为2xx(比如200或204)。如果用Lambda代理集成处理OPTIONS请求,要保证Lambda返回的响应状态码是2xx,同时包含以下CORS响应头:
    • Access-Control-Allow-Origin:设置为允许的前端域名(生产环境避免用*)
    • Access-Control-Allow-Methods:包含GET方法
    • Access-Control-Allow-Headers:明确包含Authorization
  3. 修改配置后重新部署API Gateway的对应阶段,API Gateway的配置变更必须部署后才会生效。
  4. 排查Lambda代理集成的OPTIONS响应,确认没有返回非2xx状态码,这是导致预检失败的常见原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:30:18