javascript - AWS CORs 在本地工作,但不是实时的(托管在 Netlify 上)
问题描述
它在本地运行良好,但是当我将它连接到Netlify时,出现了这个错误。
- 是的,我通过网关 API 并单击资源,单击操作,单击,“启用 cors”,甚至在 POST 方法和 OPTIONS 上单独进行
实际错误:
Access to XMLHttpRequest at 'https://uzk3crusd9.execute-api.us-east-2.amazonaws.com/production/contact' from origin 'https://seb-contact-form.netlify.app' has been blocked by CORS policy: Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.
- 如果它有助于指出,它说方法“PUT”被阻止,但我正在发出一个发布请求,该请求在本地和通过邮递员成功运行。似乎 preflight OPTIONS 认为某些东西正在使用 PUT 有问题?
我的 lambda 函数:
const AWS = require('aws-sdk');
AWS.config.update({
region: 'us-east-2'
});
const dynamodb = new AWS.DynamoDB.DocumentClient();
const dynamodbTableName = 'contact-form';
const contactPath = '/contact';
exports.handler = async function(event) {
console.log('Request event: ', event);
let response;
switch(true) {
case event.httpMethod === 'POST' && event.path === contactPath:
response = await createContact(JSON.parse(event.body));
break;
default:
response = buildResponse(404, '404 Not Found');
}
return response;
}
async function createContact(requestBody) {
const params = {
TableName: dynamodbTableName,
Item: requestBody
}
return await dynamodb.put(params).promise().then(() => {
const body = {
Operation: 'SAVE',
Message: 'SUCCESS',
Item: requestBody
}
return buildResponse(200, body);
}, (error) => {
console.error('Oh no! Something went wrong...', error);
})
}
function buildResponse(statusCode, body) {
const response = {
statusCode,
headers: {
'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" : "OPTIONS,POST,PUT,PATCH",
"Access-Control-Allow-Credentials" : true,
"Access-Control-Allow-Origin" : "*",
"X-Requested-With" : "*"
},
body: JSON.stringify(body)
}
return response;
}
解决方案
推荐阅读
- javascript - 更改后如何在javascript中获取完整标签的值?
- php - mysqli_prepare 被跳过
- project-reactor - 记录通量直到单声道完成
- c# - 如何在无模式 WPF 应用程序窗口中立即将子数据发送给父级
- android - 在Android中进行身份验证时出现Instagram重定向问题
- terminal - 如何在不...跳过的情况下在较少的终端中到达文件末尾
- reactjs - 如何从下拉菜单中显示选定的元素
- javascript - React-Native Redux this.props 未定义
- javascript - Try 可以工作,但 Catch 不能在 Javascript 函数中工作,如下所述
- prolog - Prolog 列表算术平均值