如何为 AWS API 网关自定义授权方配置 CORS?

How to configure CORS for an AWS API Gateway Custom Authorizer?

我有一个 API 由 API 网关和使用自定义授权方的 Lambda 提供支持。

对于成功的请求,它会通过授权方,然后我的 Lambda 可以 return 使用 CORS headers 进行正确的响应,没有任何问题。

但是,对于不成功的授权(例如无效令牌),我没有得到 CORS headers,这会导致我的客户端应用程序(使用 fetch API)抛出。

如何为使用自定义授权方的 API 设置 CORS?

基于this answer and this AWS documentation page,我找到了解决方法。

解决方法是在我的serverless.yml中添加如下内容:

resources:
  Resources:
    AuthorizerApiGatewayResponse:
      Type: "AWS::ApiGateway::GatewayResponse"
      Properties:
        ResponseParameters:
          "gatewayresponse.header.Access-Control-Allow-Origin": "'*'"
        ResponseType: UNAUTHORIZED
        RestApiId: {"Ref" : "ApiGatewayRestApi"}
        StatusCode: "401"