現在、IE10を使用したクロスドメインのajax呼び出しに問題があります(IE10モードでは互換性なし)。
状況:http://a
とhttp://b
の2つのドメインがあります。 http://b
にCookieを設定しています。現在http://a
ページにいます。
XMLHttpRequestを使用してhttp://b
にCORSリクエストを送信したい(これは http://blogs.msdn.com/b/ie/archive/2012/02/09/cors-に従って動作するはずです) for-xhr-in-ie10.aspx )、リクエストにCookieを含めます。 JSは次のとおりです。
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://b', true);
xhr.withCredentials = true;
xhr.send();
これにより、Cookieがリクエストに確実に添付されます。ただし、FiddlerトレースはCookieが添付されていないことを示し、401: Access Denied
を取得します。
サーバーはCORSで動作するように構成されており、Access-Controlヘッダーが含まれています。
Access-Control-Allow-Origin: http://a
Access-Control-Allow-Credentials: true
(これは、OPTIONSプリフライトリクエストがなく、最初のリクエストIE sendがGETであり、Cookieが存在しないため、401が発生するため、違いはありません)。
さらに、JSスニペットはFirefoxとOperaの両方で正常に動作します。
おそらく同じですIE P3Pの問題。IEのデフォルト設定では、応答にP3Pヘッダーも存在しないCookieが設定されている場合、Cookieは「ファーストパーティのみ」としてマークされます。つまり、iframeやCORSリクエストなどのサードパーティのコンテキストでは、IEはCookieの送信を拒否します。
これを修正するには、Cookieを設定するときにP3Pヘッダーを指定する必要があります。詳細は http://msdn.Microsoft.com/en-us/library/ms537343%28v=vs.85%29.aspx を参照してください。
更新:リンクは停止していますが、 インターネットアーカイブ で確認できます。