我创建并部署了具有以下结构的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 回答
您可以完全控制API网关中OPTIONS响应的CORS标头 . 如果需要将x-header添加到Access-Control-Allow-Headers标头,请继续添加!转到OPTIONS方法的Integration Response并修改该标头的静态值 .
当您首次使用控制台功能配置CORS时(您可能没有这样做),您可以在那里输入 Headers 列表并查看其他高级 Headers .
因此,您可以在创建时将来进行此更改,或者在创建OPTIONS后即时更新它 .
我有完全相同的问题 . 我已将自定义标头添加到资源上的Access-Control-Allow-Headers的逗号分隔列表中,启用CORS;以及资源 - 选项 - 集成响应,标头映射 .
我在Chrome中遇到同样的错误,并检查网络中的OPTIONS调用,我在响应中的Access-Control-Allow-Headers中看不到我的 Headers 名称 .