如何在 CORS RequestBuilder 响应中检测 "Access-Control-Allow-Headers"

How to detect "Access-Control-Allow-Headers" within CORS RequestBuilder response

我熟悉 CORS 和 Access-Control-Allow-* headers.

我正在发出一个 CORS XHR 请求,该请求具有一个新的地理位置 header,之前未在 OPTIONS 响应中指定 Access-Control-Allow-Headers header.

当我将我的客户端附加到一个新的服务实例时,OPTIONS 和 POST 请求有效。

当我将客户端连接到较旧的服务实例时,OPTIONS 响应的代码为 200,但 POST 因 Chrome 代码 0 和

而失败

Request header field Geoposition is not allowed by Access-Control-Allow-Headers.

如何检查 OPTIONS 响应 header(在 onResponseRecieved 内?)以便我可以 omit/remove 违规的地理位置 header 并重新提交请求?

CORS 服务器发送 Access-Control-Allow-Headers header 以响应 OPTIONS 预检调用。如果它不允许给定的 header,浏览器甚至在请求发送之前就失败了(因此状态代码为 0),并向您报告。

您无法控制预检调用 - 您无法创建调用、设置调用或处理结果。这完全由浏览器管理,作为与服务器的对话,以查看是否允许此客户端 'bend the rules'。您无权访问它,这是一件好事,它使 CORS 可用而不会使网站暴露于各种 XSRF 攻击。

因此,既然您无法检查 header,我们还能从浏览器中找出什么是合法的或不合法的吗?为什么不是错误信息?

Request header field Geoposition is not allowed by Access-Control-Allow-Headers.

我不确定是否有比这更好的方法,我也不确定是否应该有。如果您被允许与远程端点协作并请求更改,请考虑让他们允许一个端点检查支持哪些 header,或者 re-send 这个 header 其他请求(这不是预检)这样你就知道你的限制是什么。

参考文献: