出于某种原因,此错误不知从何而来:
已被 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
我是无服务器新手。有人可以给我目前情况的建议或答案吗?我应该去哪里看? 非常感谢您的帮助!
首先,您确定需要
x-company-id
吗?我看到您也有 X-Company-Id
,我猜这可能是 AWS 期望的实际标头?
可能
x-company-id
被视为自定义标头。当我尝试将实际的自定义标头传递给我的 API 时,我在无服务器和 AWS 上遇到了同样的 CORS 问题。
我的问题已通过以下方式得到解决:向
serverless.yml
添加资源部分以在 API 网关级别错误响应中包含 CORS 标头以及在我的 lambda 处理程序的正常响应中包含 CORS 标头。
我在此处找到了执行这两个步骤的说明。
请注意,如果不是安全问题,您也可以仅使用
access-control-allow-headers
将所有标头列入白名单,而不是在 *
字段中显式包含每个标头。