2013-03-25 11 views
6

CORSを使用してCookieを設定するGWTアプリケーションがあります。これは、クロム、Firefoxの、オペラでは正常に動作しますが、IE10(バージョン10.0.9200.16521)に私はこのエラーを取得する:IE10のCookieでCORSが動作しない

私はこれが実行されたときにエラーがスローされていることがわかり
SCRIPT5022: com.google.gwt.core.client.JavaScriptException: (InvalidStateError) 
code: 11 
ABORT_ERR: 20 
DATA_CLONE_ERR: 25 
DOMSTRING_SIZE_ERR: 2 
HIERARCHY_REQUEST_ERR: 3 
INDEX_SIZE_ERR: 1 
INUSE_ATTRIBUTE_ERR: 10 
INVALID_ACCESS_ERR: 15 
INVALID_CHARACTER_ERR: 5 
INVALID_MODIFICATION_ERR: 13 
INVALID_NODE_TYPE_ERR: 24 
INVALID_STATE_ERR: 11 
NAMESPACE_ERR: 14 
NETWORK_ERR: 19 
NOT_FOUND_ERR: 8 
NOT_SUPPORTED_ERR: 9 
NO_DATA_ALLOWED_ERR: 6 
NO_MODIFICATION_ALLOWED_ERR: 7 
PARSE_ERR: 81 
QUOTA_EXCEEDED_ERR: 22 
SECURITY_ERR: 18 
SERIALIZE_ERR: 82 
SYNTAX_ERR: 12 
TIMEOUT_ERR: 23 
TYPE_MISMATCH_ERR: 17 
URL_MISMATCH_ERR: 21 
VALIDATION_ERR: 16 
WRONG_DOCUMENT_ERR: 4: InvalidStateError 
B3D7C8F35C000AA1ADFE700845710C1A.cache.html, line 1102 character 7 

xhr.withCredentials = true; 

をここではGWTのJavaScriptコードです:

function create_3(){ 
    var xhr; 
    if ($wnd.XMLHttpRequest) { 
    xhr = new $wnd.XMLHttpRequest; 
    } 
    else { 
    try { 
     xhr = new $wnd.ActiveXObject('MSXML2.XMLHTTP.3.0'); 
    } 
    catch (e) { 
     xhr = new $wnd.ActiveXObject('Microsoft.XMLHTTP'); 
    } 
    } 
    xhr.withCredentials = true; 
    return xhr; 
} 

私はこの記事を見つけました: Make a CORS request in IE9 with cookies?

しかし私はIE10にアップグレードしても何の違いもありませんでした。

他にみんな同様の問題がありますか?

+0

サーバーにCORS固有のヘッダーが追加されていますか? 'Access-Control-Allow-Origin'と' Access-Control-Allow-Credentials'ヘッダを返す必要があります(少なくとも)。 – monsur

+0

はい、ヘッダーが設定されています。上記のとおり、Chrome、Firefox、Safari、Operaで動作します。 IE10(とIE9)のメインGWTのjavascriptファイルがダウンロードされ、実行時に上記の例外が表示されます。 – Tomas

+0

これは関連しているようです:http://stackoverflow.com/questions/12643960/internet-explorer-10-is-ignoring-xmlhttprequest-xhr-withcredentials-true – Tomas

答えて

7

私は同様の問題を抱えていました(一般にCORSを使用していましたが、特にGWTは使用しませんでした)。ブラウザーの設定でサードパーティのCookieがブロックされていることが判明しました(IE10>インターネットオプション>プライバシー>詳細>サードパーティのCookie>承諾)。この問題を解決するために、「自動Cookieの処理を上書きする」、「同意する」(サードパーティのCookie)、「常にセッションCookieを許可する」をチェックしました。

6

サードパーティのすべてのCookieを許可するようにブラウザを再設定するようにユーザーに指示することは、うまくいかない可能性があります。ここでの適切な修正は、ターゲットの第三者リソースが、第三者のコンテキストで使用されているリソースで使用するために許容されるP3Pポリシーを持つことを保証することです。 http://blogs.msdn.com/b/ieinternals/archive/2013/09/17/simple-introduction-to-p3p-cookie-blocking-frame.aspx

関連する問題