2015-09-25 37 views
1

我熟悉CORS和Access-Control-Allow- *标头。如何检测CORS RequestBuilder响应中的“Access-Control-Allow-Headers”

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

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

当我附上我的客户到旧的服务实例,在OPTIONS响应代码200,但POST由Chrome浏览器失败,代码0和

请求头场Geoposition不受 访问控制允许 - 允许报头。

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

回答

4

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

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

因此,由于您无法检查标题,我们还能从浏览器中发现哪些是或不合法?为什么不是错误信息?

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

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

参考文献: