使用axios POST处理reactjs表单时出现错误400-错误的请求

时间:2019-02-23 11:59:06

标签: reactjs amazon-web-services aws-lambda axios

我正在尝试将conatactform数据从Web传递到我的aws lambda函数,但是我的http客户端axios遇到错误400,指出该请求为错误请求,并且错误指出:(原因:CORS标头'Access-Control-Allow -Origin'丢失)。这是我目前正在使用的代码。

-> reactjs代码...

    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);
    });

-> lambda函数...

'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;
} 

我到底能做些什么呢?

0 个答案:

没有答案