2013-03-25 10 views
6

Ich habe GWT-Anwendung, die CORS verwendet und setzt Cookies. Es funktioniert in Chrome, Firefox, Opera, aber in IE10 (Version 10.0.9200.16521) bekomme ich diesen Fehler:CORS funktioniert nicht mit Cookies in IE10

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 

Ich sehe, dass der Fehler ausgelöst wird, wenn dies auszuführen ist:

xhr.withCredentials = true; 

hier ist GWT javaScript-Code:

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; 
} 

ich diesen Beitrag gefunden: Make a CORS request in IE9 with cookies?

Allerdings habe ich auf IE10 aktualisiert und es machte keinen Unterschied.

Wer sonst ein ähnliches Problem?

+0

Fügt Ihr Server einen CORS-spezifischen Header hinzu? Es muss mindestens die Header "Access-Control-Allow-Origin" und "Access-Control-Allow-Credentials" zurückgeben. – monsur

+0

Ja die Header werden eingestellt und wie ich oben erwähnt, funktioniert es mit Chrome, Firefox, Safari und Opera. In IE10 (und IE9) wird die Haupt-GWT-Javascript-Datei heruntergeladen und bei der Ausführung bekomme ich eine Ausnahme, die oben aufgelistet ist. – Tomas

+0

Dies scheint verwandt zu sein: http://stackoverflow.com/questions/12643960/internet-explorer-10-is-ignoring-xmlhttprequest-xhr-withcredentials-true – Tomas

Antwort

7

Ich hatte ein ähnliches Problem (mit CORS im Allgemeinen, nicht speziell GWT). Es stellte sich heraus, dass die Browsereinstellungen Cookies von Drittanbietern blockierten (IE10> Internetoptionen> Datenschutz> Erweitert> Cookies von Drittanbietern> Akzeptieren). Um das Problem zu beheben, habe ich "Override automatische Cookie-Behandlung", "Akzeptieren" (Cookies von Drittanbietern) und "Immer Sitzungscookies zulassen" aktiviert.

6

Wenn Benutzer aufgefordert werden, ihre Browser neu zu konfigurieren, um alle Cookies von Drittanbietern zuzulassen, ist es wahrscheinlich nicht erfolgreich. Die richtige Lösung hier ist, um sicherzustellen, dass die Ziel-Ressource von Drittanbietern über eine P3P-Richtlinie verfügt, die für die Verwendung in Ressourcen akzeptabel ist, die in Kontexten von Drittanbietern verwendet werden. http://blogs.msdn.com/b/ieinternals/archive/2013/09/17/simple-introduction-to-p3p-cookie-blocking-frame.aspx