You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS HTTP API Gateway CORS与Cognito JWT授权共存配置问题

解决AWS HTTP API Gateway启用Cognito JWT授权后的CORS预检401问题

核心问题原因

浏览器发送的OPTIONS预检请求不会携带Authorization令牌,但你当前给所有路由(包括OPTIONS)都配置了Cognito JWT授权,导致API Gateway直接拒绝了OPTIONS请求,根本没机会返回你配置的CORS响应头,因此前端收到401错误。


解决方案步骤

1. 给OPTIONS路由单独配置无授权策略

必须让OPTIONS请求绕过Cognito授权,具体操作:

  • 在HTTP API Gateway控制台中,找到对应路径的OPTIONS方法,将其授权类型设置为NONE(其他GET/POST等方法保留Cognito JWT授权)。
  • 如果用SAM/CloudFormation配置,需单独为OPTIONS路由指定AuthorizationType: NONE,示例代码:
    Resources:
      MyHttpApi:
        Type: AWS::ApiGatewayV2::Api
        Properties:
          Name: MyHttpApi
          ProtocolType: HTTP
          CorsConfiguration:
            AllowMethods: ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
            AllowHeaders: ["*"]
            AllowOrigins: ["http://localhost:19006/"]
            AllowCredentials: true
            MaxAge: 600
      # 单独配置OPTIONS路由的无授权策略
      MyOptionsRoute:
        Type: AWS::ApiGatewayV2::Route
        Properties:
          ApiId: !Ref MyHttpApi
          RouteKey: "OPTIONS /{proxy+}"
          AuthorizationType: NONE
          Target: !Join ['/', ['integrations', !Ref MyLambdaIntegration]]
      # 其他业务路由保留Cognito JWT授权
      MyGetRoute:
        Type: AWS::ApiGatewayV2::Route
        Properties:
          ApiId: !Ref MyHttpApi
          RouteKey: "GET /{proxy+}"
          AuthorizationType: JWT
          AuthorizerId: !Ref MyCognitoAuthorizer
          Target: !Join ['/', ['integrations', !Ref MyLambdaIntegration]]
    

2. 简化冗余的CORS配置

你的allowHeaders和exposeHeaders同时包含*和具体头,*已覆盖所有情况,简化后更清晰:

x-amazon-apigateway-cors:
  allowMethods:
  - "DELETE"
  - "GET"
  - "HEAD"
  - "OPTIONS"
  - "PATCH"
  - "POST"
  - "PUT"
  allowHeaders:
  - "*"
  exposeHeaders:
  - "*"
  maxAge: 600
  allowCredentials: true
  allowOrigins:
  - "http://localhost:19006/"

3. 验证前端请求配置

  • fetch中的mode: 'cors'是默认值,可不用显式声明;
  • 确认content-type与API预期一致,若API接受JSON,建议改为application/json(非简单请求都会触发预检,此调整不影响CORS解决,但能保证请求合法性)。

内容的提问来源于stack exchange,提问作者geo10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:39:40