2013-10-29 56 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