首页 文章

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

提问于
浏览
1

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

dev (stage)
  /echo (resource)
    POST (method)
      Method Request - Headers: X-header
    OPTIONS (method)
      Method Request - Headers: X-header

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

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

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

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

但响应 Headers 只有:

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正文中的数据 .

2 回答

  • 2

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

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

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

  • 5

    我有完全相同的问题 . 我已将自定义标头添加到资源上的Access-Control-Allow-Headers的逗号分隔列表中,启用CORS;以及资源 - 选项 - 集成响应,标头映射 .

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

    • 约翰

相关问题