如何检测"访问控制允许标题"在CORS RequestBuilder响应中

时间:2015-09-25 20:17:33

标签: gwt xmlhttprequest cors

我熟悉CORS和Access-Control-Allow- *标题。

我正在制作一个CORS XHR请求,该请求之前未在OPTIONS响应Access-Control-Allow-Headers标头中指定新的Geoposition标头。

当我将客户端附加到新服务实例时,OPTIONS和POST请求可以正常工作。

当我将客户端附加到较旧的服务实例时,OPTIONS响应的代码为200,但Chrome的代码为0且

的POST失败
  

请求标题字段不允许使用地理位置   接入控制允许集管。

如何检查OPTIONS响应标头(在onResponseRecieved?中),以便我可以省略/删除有问题的Geoposition标头并重新提交请求?

1 个答案:

答案 0 :(得分:4)

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

您无法控制预检调用 - 您无法创建呼叫,设置呼叫或处理结果。这完全由浏览器管理,作为与服务器的对话,以查看是否允许此客户端“弯曲规则”。你没有任何访问权限,这是一件好事,它使CORS可用而不会使网站暴露于各种XSRF攻击。

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

  

请求标头字段Access-Control-Allow-Headers不允许使用地理位置。

我不确定是否有比这更好的方法,我也不确定应该有。如果您被允许与远程端点协作并要求更改,请考虑让他们允许端点检查支持哪些标头,或者在其他请求(不是预检)上重新发送此标头,以便您知道什么你受限于。

参考文献: