2013-10-29 57 views
8

我注意到某些浏览器似乎不支持CoreS请求中的Credentials,至少在某些条件下。具体而言,在IE 10,尝试设置xhr.withCredentials = true结果:CORS withCredentials - 支持有限吗?

INVALID_STATE_ERR: DOM Exception 11: An attempt was made to use an object that is not, or is no longer, usable.

再次

SCRIPT5022: InvalidStateError

和Safari 5的(但不是6)我得到的,响应相同的语句。

这些已知的问题,还是我设置我的XHR错误?有哪些浏览器支持列表withCredentials

+0

http://caniuse.com/#search=cors –

+0

你是否在'open'之后但在'send'之前设置'withCredentials'? – apsillers

+0

根据[withCredentials' spec](http://www.w3.org/TR/XMLHttpRequest/#the-withcredentials-attribute):“*当set:如果状态不是''''时抛出'InvalidStateError'异常' UNSENT'或'OPENED',或者如果设置了'send()'标志。*“这表示在调用send()之前必须下注。但是,某些浏览器可能会比此规范规则错误得多。你能发布你的实际代码吗? – apsillers

回答

13

August 16, 2011 XHR draft指定的规则设置withCredentials

当设置:抛出INVALID_STATE_ERR异常,如果状态没有打开,或者如果send()标志为true。

然而,January 17, 2012 draft是更宽容:

当设定:将引发InvalidStateError异常,如果该状态不是UNSENT或打开,或者如果send()标志被设置。

你可能会调用.open,这是由2011年的规范禁止,但在2012年规范,方可设置withCredentials。为了遵守这两个要求,只需在致电.open之后转移您的财产分配。

+0

谢谢,就是这样。 – Dan