当我尝试通过HTTP请求访问AWS Lambda时,如何解决“ CORS策略”错误?

时间:2019-05-07 16:25:28

标签: amazon-web-services aws-lambda serverless aws-serverless

我最终决定尝试使用AWS lambda创建出色的无服务器功能。对于第一个,我决定创建一个简单的函数来发送邮件。我计划能够向其发送邮件数据,然后我的功能将使用它们来发送邮件。很高兴知道,我的lambda必须可以从我的网站上访问,我打算从前端逻辑中调用它。

不幸的是,当我尝试从网站上启动lambda函数时遇到了CORS政策问题。但是,当我使用cURL从CLI启动时,一切正常。

我使用API​​-Gateway样板创建了lambda函数。我是一名前端开发人员,我了解一些传统的AWS服务,但是我第一次尝试使用lambda函数,因此我认为我的配置有问题。

我想与您分享我当前的lambda配置。您可以在下面找到它:

这是我的lambda设计 Here my lambda design

这是我的API-网关配置 API-Gateway configuration

此处是我的网关回复 Gateway Responses

此外,您还可以在我的lambda代码下面以及每次我尝试调用lambda时遇到的错误。

const getRes = (status, body) => {
  return JSON.stringify({
    statusCode: status,
    headers: {
      "Content-Type": "text/plain",
      "Access-Control-Allow-Origin" : "*"
    },
    body,
  });
};

exports.handler = async (event, context, callback) => {
  if (event.body !== null && event.body !== undefined) {
    /*
    ** SEND MAIL WITH BODY PARAMS
    */
    const response = getRes(200, 'Mail sent');
    callback(null, response);
  } else {
    const response = getRes(500, 'Params missed');
    callback(null, response);
  }
};
  

CORS策略已阻止从来源“ YYY”访问“ XXX”处的XMLHttpRequest:请求的资源上没有“ Access-Control-Allow-Origin”标头。

我试图理解为什么我继续遇到这个问题而没有成功。我想我的API-网关配置有问题,但是找不到。

你有个主意吗?

谢谢!

1 个答案:

答案 0 :(得分:1)