我已经在s3存储桶中上传了一个html页面,该html页面向api网关URL发送ajax发布请求以发送电子邮件。
问题是,如果我使用邮递员发送邮件请求发送电子邮件但是使用带有ajax代码的s3中的html页面不起作用,则使用相同的api网关URL。
任何想法或帮助对我都有帮助。谢谢 ---- Ajax代码
$.ajax("https://apigateway-url/email_sending", {
"type": "POST",
"data": JSON.stringify(formData),
"contentType": "application/json"
}).done(function () {
console.log("Done")
}).fail(function () {
console.log("Failed");
// console.log(data);
});
我在s3中尝试过编辑cors配置这么多的帮助,或者在api网关中启用cors,但是没有一个能为我工作。
发送电子邮件的NodeJs代码
var sendemail = require('./sendemail')
app.post('/email_sending',function(req,res){
console.log("Request received For sending mail")
sendemail.send(req.body,function(err, data){
// res.setHeader('Access-Control-Allow-Origin', '*');
res.end("Success");
})
})
sendemail模块摘要是:
ses.sendemail(data, done)
我考虑过这个网站,但没有得到解决方案:https://codehabitude.com/2016/04/05/forms-to-emails-using-aws-lambda-api-gateway/
答案 0 :(得分:1)
很可能你没有在apigateway中正确设置CORS标头。 apigateway文档http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html清楚地描述了该过程。
一旦设置了CORS并部署了更改,您就可以使用以下curl命令验证CORS预检请求
curl -H "Origin: http://example.com" \
-H "Access-Control-Request-Method: POST" \
-H "Access-Control-Request-Headers: X-Requested-With" \
-X OPTIONS --verbose \
https://apigateway-url/email_sending
另请注意,在更改反映在API中之前,您需要在设置CORS(Big blue Deploy API按钮 - http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-deploy-api-with-console.html)之后部署更改