我熟悉CORS和Access-Control-Allow- *标题。
我正在制作一个CORS XHR请求,该请求之前未在OPTIONS响应Access-Control-Allow-Headers标头中指定新的Geoposition标头。
当我将客户端附加到新服务实例时,OPTIONS和POST请求可以正常工作。
当我将客户端附加到较旧的服务实例时,OPTIONS响应的代码为200,但Chrome的代码为0且
的POST失败请求标题字段不允许使用地理位置 接入控制允许集管。
如何检查OPTIONS响应标头(在onResponseRecieved?中),以便我可以省略/删除有问题的Geoposition标头并重新提交请求?
答案 0 :(得分:4)
CORS服务器发送Access-Control-Allow-Headers
标头以响应OPTIONS
预检调用。如果它不允许给定标题,则浏览器在发送之前就会使请求失败(因此为0状态代码),并向您报告。
您无法控制预检调用 - 您无法创建呼叫,设置呼叫或处理结果。这完全由浏览器管理,作为与服务器的对话,以查看是否允许此客户端“弯曲规则”。你没有任何访问权限,这是一件好事,它使CORS可用而不会使网站暴露于各种XSRF攻击。
因此,既然您无法检查标题,那么我们还能从浏览器中找到什么是合法的或不合法的?为什么不是错误信息?
请求标头字段Access-Control-Allow-Headers不允许使用地理位置。
我不确定是否有比这更好的方法,我也不确定应该有。如果您被允许与远程端点协作并要求更改,请考虑让他们允许端点检查支持哪些标头,或者在其他请求(不是预检)上重新发送此标头,以便您知道什么你受限于。
参考文献: