如何使用 aws cdk 启用 CORS?我不断收到“Access-Control-Allow-Origin”消息

Moy*_*mir 4 amazon-web-services node.js aws-lambda aws-api-gateway aws-cdk

我使用 aws cdk 创建了 lambda 和 apigateway。邮递员的效果很好。

当我从浏览器发出后调用时,我得到No "Access-Control-Allow-Origin".

因此,我尝试使用 CDK 在 API Gateway 中启用 CORS。我按照以下方式进行:

// users microservice api gateway
    const apiGateway = new LambdaRestApi(this, "usersApi", {
      restApiName: "Users Service",
      handler: microServices.fn,
      proxy: false,
    });

    // creating resources
    const users = apiGateway.root.addResource("users");
    users.addMethod("POST");
    users.addCorsPreflight({
      allowOrigins: ["*"],
      allowHeaders: ["*"],
      allowMethods: ["*"],
    });
Run Code Online (Sandbox Code Playgroud)

但我还是明白了No "Access-Control-Allow-Origin"
我缺少什么?如何通过 cdk 启用 CORS?

gsh*_*hka 6

您的 lambda 必须将 CORS 标头放入其响应中。

例如:

return {
    isBase64Encoded: false,
    statusCode: 200,
    body: JSON.stringify('success'),
    headers: {
        'Access-Control-Allow-Headers': 'Content-Type',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'OPTIONS,POST',
    }
}
Run Code Online (Sandbox Code Playgroud)

参考 - 参见Enabling CORS support for Lambda or HTTP proxy integrations部分

https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

  • 没有。CORS 响应应来自 OPTIONS 请求,而不是 POST 请求。您将 API Gateway 配置为响应 OPTIONS 请求,而不是在 Lambda 中处理该请求。 (2认同)