预检响应中的无服务器 AWS Access-Control-Allow-Headers

问题描述 投票:0回答:1

出于某种原因,此错误不知从何而来:

已被 CORS 策略阻止:预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段 x-company-id。

这是我的

serverless.yml
lambda 函数:

  healthPlan:
    handler: src/handlers/health-plan.healthPlanHandler
    events:
      - http:
          path: /health-plan
          method: get
          cors:
            origin: ${self:custom.allowed-origin}
            allowCredentials: ${self:custom.allow-credentials}
            headers:
              - Content-Type
              - X-Amz-Date
              - Authorization
              - X-Api-Key
              - X-Amz-Security-Token
              - X-Amz-User-Agent
              - X-Company-Id
              - x-company-id
          authorizer:
            authorizerId: ${cf:auth-service-${self:provider.stage}.ApiAuthorizer}
            type: TOKEN

我是无服务器新手。有人可以给我目前情况的建议或答案吗?我应该去哪里看? 非常感谢您的帮助!

amazon-web-services lambda header serverless
1个回答
2
投票

首先,您确定需要

x-company-id
吗?我看到您也有
X-Company-Id
,我猜这可能是 AWS 期望的实际标头?

可能

x-company-id
被视为自定义标头。当我尝试将实际的自定义标头传递给我的 API 时,我在无服务器和 AWS 上遇到了同样的 CORS 问题。

我的问题已通过以下方式得到解决:

serverless.yml
添加资源部分以在 API 网关级别错误响应中包含 CORS 标头以及在我的 lambda 处理程序的正常响应中包含 CORS 标头

我在此处找到了执行这两个步骤的说明。

请注意,如果不是安全问题,您也可以仅使用

access-control-allow-headers
将所有标头列入白名单,而不是在
*
字段中显式包含每个标头。

© www.soinside.com 2019 - 2024. All rights reserved.