无法在具有 CORS 的 AWS API 网关上使用自定义请求 Headers
Can't use custom Request Headers on AWS API Gateway with CORS
我已经创建并部署了具有以下结构的 AWS API 网关资源,包括自定义 HTTP 请求 Header 'X-header'
dev (stage)
/echo (resource)
POST (method)
Method Request - Headers: X-header
OPTIONS (method)
Method Request - Headers: X-header
当我从 Chrome POST 到端点时,出现以下错误。
XMLHttpRequest cannot load https://fxxxx.execute-api.us-west-2.amazonaws.com/dev/echo. Request header field X-header is not allowed by Access-Control-Allow-Headers in preflight response.
Chrome 正在对 OPTIONS 方法进行预检。我可以看到请求 Headers:
Access-Control-Request-Headers:accept, content-type, x-header
Access-Control-Request-Method:POST
但响应 Header 只有:
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-Origin:*
Chrome 期望响应 Access-Control-Request-Headers 包含我的自定义 x-header,这似乎合乎逻辑。这是 API 网关错误吗?
我看到的唯一解决方法是删除自定义 header 并在 POST body.
中传递数据
您可以完全控制 API 网关中 OPTIONS 响应的 CORS header。如果您需要将 x-header 添加到 Access-Control-Allow-Headers header,请继续添加!转到 OPTIONS 方法的 Integration Response 并修改该 header.
的静态值
当您第一次使用控制台功能配置 CORS 时(您可能没有这样做),您可以在那里输入 header 列表并查看其他高级 header。
因此您以后可以在 create-time 进行此更改,或者在创建 OPTIONS 后即时更新它。
我有完全相同的问题。我已将自定义 header 添加到 Access-Control-Allow-Headers 资源下的 comma-separated 列表,启用 CORS;并且还在资源下 - 选项 - 集成响应,Header 映射。
我在 Chrome 中遇到了同样的错误,并检查了网络中的 OPTIONS 调用,我在响应的 Access-Control-Allow-Headers 中没有看到我的 header 名字。
- 约翰
不确定是否有人找到了解决方案,但在选项--> 集成响应--> Access-Control-Allow-Headers 下有一个选项:
我已经创建并部署了具有以下结构的 AWS API 网关资源,包括自定义 HTTP 请求 Header 'X-header'
dev (stage)
/echo (resource)
POST (method)
Method Request - Headers: X-header
OPTIONS (method)
Method Request - Headers: X-header
当我从 Chrome POST 到端点时,出现以下错误。
XMLHttpRequest cannot load https://fxxxx.execute-api.us-west-2.amazonaws.com/dev/echo. Request header field X-header is not allowed by Access-Control-Allow-Headers in preflight response.
Chrome 正在对 OPTIONS 方法进行预检。我可以看到请求 Headers:
Access-Control-Request-Headers:accept, content-type, x-header
Access-Control-Request-Method:POST
但响应 Header 只有:
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-Origin:*
Chrome 期望响应 Access-Control-Request-Headers 包含我的自定义 x-header,这似乎合乎逻辑。这是 API 网关错误吗?
我看到的唯一解决方法是删除自定义 header 并在 POST body.
中传递数据您可以完全控制 API 网关中 OPTIONS 响应的 CORS header。如果您需要将 x-header 添加到 Access-Control-Allow-Headers header,请继续添加!转到 OPTIONS 方法的 Integration Response 并修改该 header.
的静态值当您第一次使用控制台功能配置 CORS 时(您可能没有这样做),您可以在那里输入 header 列表并查看其他高级 header。
因此您以后可以在 create-time 进行此更改,或者在创建 OPTIONS 后即时更新它。
我有完全相同的问题。我已将自定义 header 添加到 Access-Control-Allow-Headers 资源下的 comma-separated 列表,启用 CORS;并且还在资源下 - 选项 - 集成响应,Header 映射。
我在 Chrome 中遇到了同样的错误,并检查了网络中的 OPTIONS 调用,我在响应的 Access-Control-Allow-Headers 中没有看到我的 header 名字。
- 约翰
不确定是否有人找到了解决方案,但在选项--> 集成响应--> Access-Control-Allow-Headers 下有一个选项: