AWS API Gateway v2 OPTIONS请求未返回CORS头问题排查咨询
问题根因
你当前预检请求未返回CORS头是两个配置不匹配导致的:
- 你发送的预检请求头
Access-Control-Request-Headers: origin不在API网关CORS配置的AllowHeaders列表中,当前列表仅允许content-type,校验不通过时API网关不会返回任何CORS相关响应头 - Origin字段必须填写完整的源站格式,需包含协议、端口,例如
http://localhost:3000,仅填写localhost不符合规范
Lambda是否影响当前问题
你的判断正确。OPTIONS预检请求由API网关直接处理,不会转发到后端Lambda,因此Lambda侧的CORS头配置和当前问题完全无关,只有预检通过后的实际业务请求才会到达Lambda。
正确校验CORS配置的curl方法
- 先修改API网关CORS配置,把需要放行的请求头加入
AllowHeaders列表,例如origin、content-type,测试阶段也可以临时设为*降低排查复杂度 - 使用以下curl命令发起预检请求:
# 替换为你实际的源站地址、API地址、请求方法、请求头 ORIGIN="http://localhost:3000" API_URL="https://redacted.execute-api.us-west-2.amazonaws.com/redacted/" REQUEST_METHOD="POST" REQUEST_HEADERS="content-type,origin" curl -v -X OPTIONS \ -H "Origin: ${ORIGIN}" \ -H "Access-Control-Request-Method: ${REQUEST_METHOD}" \ -H "Access-Control-Request-Headers: ${REQUEST_HEADERS}" \ "${API_URL}"
- 配置生效的判断标准:响应头中包含
Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers三个必填CORS头
标签相关建议
支持新增aws-api-gateway-v2标签。API Gateway v2(HTTP API)和v1(REST API)在CORS处理逻辑、部署机制、集成方式上差异较大,独立标签更便于同类问题检索,和Terraform拆分独立资源模块的逻辑一致。
内容的提问来源于stack exchange,提问作者jcollum
相关产品推荐
相关产品推荐

