【发布时间】:2019-12-30 05:17:24
【问题描述】:
我使用 AWS Lambda 和 API 网关构建了一个简单的 RESTful 端点。 API 网关已启用 CORS,并且客户端正在发送正确的标头,如 here 所述
客户端应用程序是在 Django 中构建并使用 JQuery:
$.ajax({
type: 'GET',
url: baseUrl,
crossDomain: true,
contentType: 'application/json'
})
此外,Lambda 函数本身会返回以下负载:
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json',
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": "true"
},
'body': json.dumps(json_response)
}
Chrome 仍然抛出 CORS 错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource
我错过了什么吗?
【问题讨论】:
-
大多数浏览器会向端点发送“preflight” OPTIONS 请求,如果此响应包含正确的 CORS 标头,则会发送实际请求。您需要配置您的端点为 OPTIONS 请求发送正确的 CORS 标头docs.aws.amazon.com/apigateway/latest/developerguide/…
-
谢谢! OPTIONS 方法已经返回了正确的 CORS 标头:Access-Control-Allow-Headers、Access-Control-Allow-Methods 和 Access-Control-Allow-Origin
-
响应的 HTTP 状态码是什么?您可以使用浏览器开发工具中的网络窗格进行检查。是 4xx 还是 5xx 错误而不是 200 OK 成功响应?
-
尝试从“操作”菜单中执行“启用 CORS”。它将添加一个 OPTIONS 方法。发布此操作,请点击以下链接。希望能帮助到你。 stackoverflow.com/questions/35190615/…
标签: jquery django amazon-web-services aws-lambda cors