21

現在、IE10 (互換性ではなく IE10 モード) を使用したクロスドメイン ajax 呼び出しで問題が発生しています。

状況: 私は 2 つのドメインを持っていhttp://aますhttp://b。の Cookie を設定していhttp://bます。私は現在 のページにいますhttp://a

XMLHttpRequestを使用して CORS リクエストを実行したい( http://blogs.msdn.com/b/ie/archive/2012/02/09/cors-for-xhr-in-ie10.aspxhttp://bによると、動作するはずです) )、リクエストに 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 が送信する最初のリクエストが GET であり、Cookie が存在しないため、401 が発生するため、違いはありません)。

さらに、JS スニペットは Firefox と Opera の両方で正常に動作します。

4

3 に答える 3

25

おそらく同じ古い 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を参照してください。

更新: リンクは無効になっていますが、インターネット アーカイブで見ることができます

于 2013-04-26T14:02:29.093 に答える
-1

同様の問題があり、ブラウザーの設定がサードパーティの Cookie をブロックしていることが判明しました (IE10 > インターネット オプション > プライバシー > 詳細設定 > サード パーティの Cookie > 受け入れる)。この問題を解決するために、「自動 Cookie 処理をオーバーライドする」、「受け入れる」(サードパーティの Cookie)、および「常にセッション Cookie を許可する」にチェックを入れました。

于 2013-05-19T13:13:56.013 に答える
-1

ヘッダー Vary : cookie を追加しましたが、うまくいきました..

于 2014-02-04T14:05:46.193 に答える