He subido una página html en el depósito s3 y esa página html hace una solicitud de publicación de ajax a la URL de la puerta de enlace api para enviar un correo electrónico.
El problema es que la misma URL de puerta de enlace api si uso cartero para hacer una solicitud de publicación, se envía el correo electrónico, pero con la página html en s3 que tiene código ajax no funciona.
Cualquier idea, o ayuda será útil para mí. Gracias ---- código 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); });He intentado mucha ayuda de la red, como editar la configuración de cors en s3 o habilitar cors en la puerta de enlace api, pero ninguna funcionó para mí.
Código de NodeJs para enviar correo electrónico
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"); }) })El fragmento del módulo sendemail es:
ses.sendemail(data, done)Consideré este sitio web pero no obtuve la solución: https://codehabitude.com/2016/04/05/forms-to-emails-using-aws-lambda-api-gateway/
Es muy probable que no esté configurando los encabezados CORS correctamente en apigateway. La documentación de apigateway http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html describe claramente el proceso.
Una vez que haya configurado CORS e implementado los cambios, puede verificar la solicitud de verificación previa de CORS con el siguiente comando curl
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_sendingAdemás, tenga en cuenta que debe implementar los cambios después de configurar CORS (botón azul grande Implementar API: http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-deploy-api-with-console .html ) antes de que el cambio se refleje en su API