【发布时间】:2017-03-02 04:18:47
【问题描述】:
我查看了关于 SO 的其他相关问题,但这似乎有所不同。 其实我的问题和this one很相似,只是我没有400状态问题。
设置:
- 通过 API 网关的 lambda 函数
- 授权:无,需要 API KEY:false
部署到阶段:测试
1 个资源,1 个集成 lambda 的 POST 方法。
- 直接调用 POST 端点,例如with curl 总是返回 200(有/没有有效负载、错误有效负载等) - 所以这与引用的问题不同。
我已使用“启用 CORS”选项 - 我已尝试在资源和 POST 请求(并随后部署 API)上应用此选项。
在 API GW 中,我可以看到 Access-Control-Allow-Origin 在 POST 方法 - 方法响应区域下的 200 个响应标头中列出。
结果:在 Chrome 中从客户端代码调用端点,OPTIONS 通过但 POST 由于缺少 Access-Control-Allow-Origin 标头而失败。
在 curl 中:OPTIONS 调用
curl -X OPTIONS -H "Access-Control-Request-Method: POST" \
-H "Access-Control-Request-Headers: Content-Type" \
-H "Origin: http://example.com" --verbose <endpoint>
回复是:
< HTTP/1.1 200 OK
< Content-Type: application/json
...
< Access-Control-Allow-Headers: Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token
< Access-Control-Allow-Methods: POST,OPTIONS
< Access-Control-Allow-Origin: *
...
但使用 POST:
curl -X POST -d '{}' -H "Content-Type: application/json" \
-H "Origin: http://example.com" --verbose <endpoint>
它返回:
< HTTP/1.1 200 OK
< Content-Type: application/json
...
和响应 json 正文 - 但没有 Access-anything 标头。
我还能检查什么?
【问题讨论】:
标签: amazon-web-services cors aws-lambda aws-api-gateway