在AWS Lambda上配置CORS响应头?

Ale*_*ira 11 amazon-web-services cors aws-lambda aws-api-gateway

我正在尝试使用AWS API Gateway创建新服务,但我发现浏览器会自动调用OPTIONS方法以获取CORS信息.

问题是AWS API Gateway不提供配置CORS头的本机方式.

是否可以创建Lambda脚本以响应OPTIONS方法?

sqr*_*ren 27

如果启用了lambda-proxy,则需要手动设置CORS标头:

module.exports.hello = function(event, context, callback) {

    const response = {
      statusCode: 200,
      headers: {
        "Access-Control-Allow-Origin" : "*", // Required for CORS support to work
        "Access-Control-Allow-Credentials" : true // Required for cookies, authorization headers with HTTPS
      },
      body: JSON.stringify({ "message": "Hello World!" })
    };

    callback(null, response);
};
Run Code Online (Sandbox Code Playgroud)

https://serverless.com/framework/docs/providers/aws/events/apigateway#enabling-cors


kix*_*orz 6

如果使用{proxy+}端点,则必须在Lambda函数中处理CORS HTTP请求。实现取决于您使用的框架。对于Express,最简单的解决方案是仅使用Express CORS中间件

如果您不想通过来处理CORS请求Lambda,请尝试将您的设置更改为在级别Lambda Method上处理。CORSAPI Gateway

这是有关在AWS API Gateway上进行CORS设置的详细官方教程。

同样重要的是,您必须允许标题X-Api-Key中的标题,Access-Control-Allow-Headers否则身份验证将不起作用,并且会出现错误。

编辑: 2015年11月,API网关团队添加了一项新功能,以简化CORS设置。

  • 如果您的api网关配置为lambdaproxy,则在api网关中仅启用CORS设置是不够的 (14认同)