无法在AWS API Gateway上使用CORS使用自定义请求标头

Jas*_*son 2 amazon-web-services http-headers cors aws-api-gateway

我创建并部署了具有以下结构的AWS API Gateway资源,包括自定义HTTP请求标头'X-header'

dev (stage)
  /echo (resource)
    POST (method)
      Method Request - Headers: X-header
    OPTIONS (method)
      Method Request - Headers: X-header
Run Code Online (Sandbox Code Playgroud)

当我从Chrome发送到端点时,出现以下错误.

XMLHttpRequest无法加载https://fxxxx.execute-api.us-west-2.amazonaws.com/dev/echo.预检响应中的Access-Control-Allow-Headers不允许请求标头字段X-header.

Chrome正在对OPTIONS方法进行预检检查.我可以看到请求标题:

Access-Control-Request-Headers:accept,content-type,x-header
Access-Control-Request-Method:POST

但响应标题只有:

Access-Control-Allow-Headers:Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token
Access-Control-Allow-Methods:POST,OPTIONS
Access-Control-Allow-起源:*

Chrome希望Response Access-Control-Request-Headers包含我的自定义x-header,这似乎是合乎逻辑的.这是API Gateway错误吗?

我看到的唯一解决方法是删除自定义标头并传递POST正文中的数据.

小智 8

我有完全相同的问题。我已将自定义标头添加到资源下的 Access-Control-Allow-Headers 的逗号分隔列表中,Enable CORS; 也在资源 - 选项 - 集成响应、标头映射下。

我在 Chrome 中遇到同样的错误,并检查网络中的 OPTIONS 调用,我在响应中的 Access-Control-Allow-Headers 中没有看到我的标头名称。

  • 约翰


Jac*_*AWS 6

您可以完全控制API网关中OPTIONS响应的CORS标头.如果需要将x-header添加到Access-Control-Allow-Headers标头,请继续添加!转到OPTIONS方法的Integration Response并修改该标头的静态值.

当您首次使用控制台功能配置CORS时(您可能没有这样做),您可以在那里输入标题列表并查看其他高级标题.

因此,您可以在创建时将来进行此更改,或者在创建OPTIONS后即时更新它.


小智 6

不确定是否有人找到了解决方案,但选项 - >集成响应 - >访问控制允许标头下有一个选项: 在此输入图像描述