CORS withCredentials - 支持有限?

8
我注意到某些浏览器在某些情况下似乎不支持跨域请求中的withCredentials。具体来说,在IE 10中,尝试设置xhr.withCredentials = true会导致:SCRIPT5022: InvalidStateError。而在Safari 5(但不是6)中,我得到了INVALID_STATE_ERR: DOM Exception 11: An attempt was made to use an object that is not, or is no longer, usable.的错误信息,同样是对相同语句的响应。这些是已知问题吗?还是我设置XHR时出了问题?是否有一个支持withCredentials的浏览器列表?

http://caniuse.com/#search=cors - Diodeus - James MacFarlane
你是在 open 之后但在 send 之前设置 withCredentials 吗? - apsillers
根据withCredentials规范:"设置时:如果状态不是UNSENTOPENED,或者send()标志被设置,则抛出一个InvalidStateError异常。" 这表明在调用send()之前必须这样做。然而,有些浏览器可能会比这个规范更严格地执行此规则。你能发布你的实际代码吗? - apsillers
1个回答

14

2011年8月16日XHR草案规定了设置withCredentials的规则:

当设置时:如果状态不是OPENED或send()标志为true,则抛出INVALID_STATE_ERR异常。

然而,2012年1月17日草案更加宽容:

当设置时:如果状态不是UNSENT或OPENED,或者send()标志已设置,则抛出InvalidStateError异常。

您可能在调用.open之前设置了withCredentials,这在2011年的规范中是不允许的,但在2012年的规范中是允许的。为了同时符合两个规范,请将属性赋值移动到调用.open之后。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接