如何使用AWS API网关和Lambda通过CORS?
我目前有一个Lambda函数,在测试它时可以工作(它是一个Mailchimp集成,用于向用户订阅列表) 我通过lambda使用API网关创建了一个API端点 但是,当我在我的应用程序上测试它时(当前通过localhost:3000),我从API网关得到一个CORS错误:如何使用AWS API网关和Lambda通过CORS?,cors,aws-lambda,aws-api-gateway,Cors,Aws Lambda,Aws Api Gateway,我目前有一个Lambda函数,在测试它时可以工作(它是一个Mailchimp集成,用于向用户订阅列表) 我通过lambda使用API网关创建了一个API端点 但是,当我在我的应用程序上测试它时(当前通过localhost:3000),我从API网关得到一个CORS错误: Access to XMLHttpRequest at 'https://MY_API.execute-api.us-west-2.amazonaws.com/default/mailchimp-lambda' from or
Access to XMLHttpRequest at 'https://MY_API.execute-api.us-west-2.amazonaws.com/default/mailchimp-lambda' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我尝试了多种方法:
有人能解释如何访问lambda函数吗?如果您使用的是lambda-PROXY集成,这意味着您的响应需要访问控制允许源标题 下面是函数示例:
exports.handler = async (event) => {
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin" : "*" // Required for CORS
},
body: JSON.stringify('Hello from Lambda!!'),
};
return response;
};
在这里,您可以找到有关类似问题的更多详细信息:看起来您没有启用cors。这可能会帮助您:我通过API网关控制台启用了cors:✔ 创建选项方法✔ 将带有空响应模型的200方法响应添加到选项方法✔ 将模拟集成添加到OPTIONS方法✔ 将200集成响应添加到选项方法✔ 将访问控制允许标头、访问控制允许方法、访问控制允许原始方法响应标头添加到选项方法✔ 添加Access Control Allow标头、Access Control Allow方法、Access Control Allow Origin Integration Response标头映射到OPTIONS Method之后是否重新部署了api网关?@deosha是的,我重新部署了,我还添加了一个资源策略,包括“主体”:“*”在声明中,没有用。另外,我正在查看CloudWatch日志,我正在控制台上记录事件。当它来自我的浏览器时,event.body为null,但它是通过Postman定义的。它说httpMethod是选项,这很奇怪,我不认为lambda函数在自动选项请求期间运行。我想在API网关配置->网关响应->默认4XX中,您的配置是什么?您能否在那里添加访问控制允许源:'*并重新部署并再次检查?