использование axios POST для формы реагирования привело к ошибке 400 - неправильный запрос - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь передать данные conatactform из Интернета в мою лямбда-функцию aws, но мой http-клиент axios сталкивается с ошибкой 400, заявляющей, что запрос является ПЛОХИМ ЗАПРОСОМ, и сообщением об ошибке: (Причина: заголовок CORS 'Access-Control-Allow-Оригины отсутствуют).Это код, который я сейчас использую.

-> код реагирования ...

    const data = {
        firstname,
        lastname,
        email,
        message
    };

    axios.post('/prod/ContactFormLambda', data, {
        headers: { 'ContentType': 'application/json' }
    })
    .then(response => {
        console.log(response);
    })
    .catch(err => {
        console.log(err.response);
    });

-> лямбда-функция ...

'use strict';
console.log('Loading function');
const AWS = require('aws-sdk');
const sesClient = new AWS.SES();
const sesConfirmedAddress = " verified-email@email.com";

/**
 * Lambda to process HTTP POST for contact form with the following body
 * {
      "email": <contact-email>,
      "subject": <contact-subject>,
      "message": <contact-message>
    }
 *
 */
exports.handler = (event, context, callback) => {
    console.log('Received event:', JSON.stringify(event, null, 2));
    var emailObj = JSON.parse(event.body);
    var params = getEmailMessage(emailObj);
    var sendEmailPromise = sesClient.sendEmail(params).promise();

    var response = {
        statusCode: 200
    };

    sendEmailPromise.then(function(result) {
        console.log(result);
        callback(null, response);
    }).catch(function(err) {
        console.log(err);
        response.statusCode = 500;
        callback(null, response);
    });
};

function getEmailMessage (emailObj) {
    var emailRequestParams = {
        Destination: {
          ToAddresses: [ sesConfirmedAddress ]  
        },
        Message: {
            Body: {
                Text: {
                    Data: emailObj.message
                }
            },
            Subject: {
                Data: emailObj.subject
            }
        },
        Source: sesConfirmedAddress,
        ReplyToAddresses: [ emailObj.email ]
    };

    return emailRequestParams;
} 

Что я могу сделать лучше, чтобы дойти до конца?

...