gpt4 book ai didi

reactjs - 如何向此 Lambda 函数添​​加 CORS header

转载 作者:行者123 更新时间:2023-12-04 07:42:06 24 4
gpt4 key购买 nike

请不要打扰我,因为这是我的第一个堆栈溢出帖子,但我的后端经验很少,并且真的很难满足 CORS 要求。
我想使用 AWS(SES、API Gateway、Lambda)将表单数据发送到我们公司的电子邮件帐户。我的函数目前在 AWS 中测试时可以工作,但在我网站的客户端上不起作用。根据我目前从研究中收集到的信息,我的 Lambda 函数需要一个 CORS header 才能工作。这是代码:

var aws = require("aws-sdk");
var ses = new aws.SES({ region: "us-east-1" });

exports.handler = async function(payload) {
var params = {
Destination: {
ToAddresses: ['placeholder@place.com'],
},
Message: {
Body: {
Text: {
Data: `\n
${payload.fullName} has tried to contact you. \n
Message: \n
-------------------- \n
${payload.comments} \n
-------------------- \n
Here is the sender's contact information: \n
Name: ${payload.fullName} \n
Email: ${payload.emailAddress} \n
Phone: ${payload.phone} \n
Company: ${payload.companyName}`
},
},

Subject: { Data: payload.subject },
},
Source: 'placeholder@place.com',
};


return ses.sendEmail(params).promise()
};
我正在将此代码视为如何包含 CORS header 的示例:
exports.handler = async (event) => {
let data = {};
let res = {
statusCode: 200,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*' // replace with hostname of frontend (CloudFront)
},
body: JSON.stringify(data)
};
return res;
};
谁能帮我把这两种方法结合起来?我不明白如何将 SES 功能变成更传统的响应。我主要是前端开发人员,所以我希望我错过了一些愚蠢的东西。我很感激任何回应。

最佳答案

如果您可以将 API Gateway 集成类型更改为 Lambda Proxy ,那么此代码可以帮助您。
将处理程序方法中的整个代码移至另一个函数,例如 sendEmail

const sendEmail =  async function(payload) {
// Your code to crete the `params` omitted for brevity
return ses.sendEmail(params).promise()
};
处理程序可以调用此函数,并根据此函数的结果发送带有 CORS header 的适当结果
exports.handler = async function(event) {
const payload = JSON.parse(event.body);
const CORS_HEADERS = {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*' // Your origin name
};
try {
await sendEmail(payload);
return {
statusCode: 200,
headers: CORS_HEADERS,
body: '{}'
}
} catch(err) {
return {
statusCode: 500, // Can be 4XX or 5XX depending on the error
headers: CORS_HEADERS,
body: `{"err": ${err.messge}}`
}
}
}
为此,它适用于 CORS请求,您还需要确保 OPTIONS请求以适当的 header 响应。您可以使用 AWS 控制台执行以下操作 this文档。对于 CloudFormation 和 api-gateway V2, this文档应该会有所帮助。对于 AWS SAM, this文档应该会有所帮助(如果您还没有使用任何无服务器开发工具,请查看 AWS SAM)。
如果您不想使用 Lambda 代理,请确保集成响应为 OPTIONS 请求和 POST 请求发送适当的 CORS header 。 This可以帮助。

关于reactjs - 如何向此 Lambda 函数添​​加 CORS header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67408359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com