【发布时间】:2019-09-09 02:48:02
【问题描述】:
这似乎已经被问了一百万次,但我已经尝试添加到我的前端(React)和后端(带有 Node.js 的 Lambda):
Access-Control-Allow-Headers
Access-Control-Request-Headers
Access-Control-Allow-Methods: 'GET,PUT,POST,DELETE,PATCH,OPTIONS'
但我仍然收到此错误:
Access to XMLHttpRequest at 'https://<API-INVOKE-URL>/prod/notes' from origin 'http://localhost:3000' has been blocked by CORS policy: Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.
这是我处理响应的 Lambda 代码:
function buildOutput(statusCode, data) {
let _response = {
statusCode: statusCode,
headers: {
"Access-Control-Allow-Origin": "*"
},
body: JSON.stringify(data)
};
return _response;
};
这是我发送 POST 请求的 React 代码:
createNote(note) {
return API.post("notes", "/notes", {
headers: {
"Authorization": this.state.token,
"Access-Control-Allow-Origin": "*"
},
body: {
userid: this.state.username,
noteid: 'new',
content: 'from frontend'
}
});
- 我已经从控制台测试了我的 Lambda 函数并且它可以工作(能够对 DynamoDB 执行 CRUD)。
- 我已经为我的 API Gateway 资源启用了 CORS 并部署了 API。
- 我尝试过使用 PostMan:
Headers:Content/Type: application/json
Authorization: <MY_TOKEN>
*With and without* Access-Control-Allow-Origin: *
它有效:请求已成功从 PostMan 发送到 API Gateway,从而在我的 DynamoDB 中生成一个新项目。
【问题讨论】:
-
我认为您必须允许标头来源以及来自后端的 API 响应。
-
我试过了。这也行不通。
标签: node.js reactjs amazon-web-services cors http-headers