【发布时间】:2021-12-06 14:44:38
【问题描述】:
我有一个简单的 html 表单,我使用 api-gateway 和 lambda 从中获取数据并将其发送到我的电子邮件。当我点击表单的提交按钮时,我收到了电子邮件,一切都如预期的那样。
但是 chrome 给了我这个错误:
Access to XMLHttpRequest at 'https://*********.execute-api.us-east-1.amazonaws.com/*******' from origin 'http://127.0.0.1:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
jquery.min.js:2 POST https://*********.execute-api.us-east-1.amazonaws.com/******* net::ERR_FAILED 200
为什么会发生这种情况,我该如何阻止它。
在 api-gateway 中启用了 CORS。 我的 javascript 看起来像这样:
var data = {
myData: myData,
moreData: moreData,
};
$.ajax({
type: "POST",
url : "https://*********.execute-api.us-east-1.amazonaws.com/*******",
dataType: "json",
crossDomain: "true",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
success: function () {
alert("it worked");
form.reset()
},
error: function () {
alert("did not work");
}
});
Lambda 看起来像这样
exports.handler = function (event, context) {
console.log('Received event:', event);
sendEmail(event, function (err, data) {
context.done(err, null);
});
};
function sendEmail (event, done) {
var params = {
Destination: {
ToAddresses: [
'myemail@email.com'
]
},
Message: {
Body: {
Text: {
Data: 'mydata: ' + event.myData + '\n moreData: ' + event.moreData,
Charset: 'UTF-8'
}
},
Subject: {
Data: 'subject of my email',
Charset: 'UTF-8'
}
},
Source: 'myemail@email.com'
};
ses.sendEmail(params, done);
}
就像我上面提到的,这有效,我收到了电子邮件,但浏览器仍然显示错误
【问题讨论】:
标签: javascript aws-lambda cors aws-api-gateway