web-dev-qa-db-ja.com

Internet Explorer 11はCORS要求にOriginヘッダーを追加しませんか?

私の問題は、私が当てはまるいくつかの仮定に依存しています。

仮定nr 1:オリジンヘッダー

Originヘッダーは、ブラウザがCORS(Cross Origin Resource Sharing)要求を行うために必要です。

ウィキペディア

クロスオリジンリクエストを開始するために、ブラウザはリクエストにOrigin HTTPヘッダーを送信します。

HTML5 Rocks

最初に注意することは、有効なCORSリクエストalwaysにはOriginヘッダーが含まれていることです。このOriginヘッダーはブラウザによって追加され、ユーザーが制御することはできません。

W

要求URLのオリジンが元のURLのオリジンと同じオリジンでない場合、ソースのオリジンをグローバルに一意の識別子[..]に設定します。

仮定番号2:Internet Explorer 10+はCORSをサポートします

caniuse.com を参照し、Googleを使用して、サポートを主張するさまざまな種類のソースをさらに数百件入手してください。

仮定nr 3:異なるポートは異なるオリジンです

異なるポート番号を使用するリソースは、起源が異なると見なされます。

ウィキペディア

これらすべての値がまったく同じ場合にのみ、2つのリソースは同じOriginであると見なされます。 [..]失敗-プロトコルとホストは同じですが、ポートが異なります。

Mozilla Developer Network

プロトコル、ポート(指定されている場合)、およびホストが両方のページで同じ場合、2つのページのオリジンは同じです。

問題:

Internet Explorer 11は、同じドメイン「localhost」に異なるポート(8411から8080)を使用してCORS要求を行うときに、Originヘッダーを送信しません。 Opera、FireFox、およびChromeはOriginヘッダーを送信しますが、Internet Explorer 10以降ではCORSがサポートされていると誰もが言い続けていますか?

27

Internet Explorerの「同じオリジン」の定義は、他のブラウザーとは異なります。 same-Originポリシーに関するMDNドキュメントのIE例外セクションを参照してください。

同じExplorerポリシーに関しては、Internet Explorerには2つの大きな例外があります。

  • Trust Zones:両方のドメインが高信頼ゾーン(企業ドメインなど)にある場合、同じOrigin制限は適用されません
  • ポート:IEは同じオリジンコンポーネントにポートを含めないため、 http:// company .com:81/index.html および http://company.com/index.html は同じOriginからのものと見なされ、制限は適用されません。

したがって、異なるポート間、またはIEの信頼ゾーンのいずれかでクロスオリジンリクエストが発生した場合、IEはリクエストをクロスオリジンとして処理せず、Origin:ヘッダーを追加する必要はありません。

19
sjy

私はたまたま報告されたバグを偶然見つけました Microsoftの関連サイト は私の問題を明確に説明しています。マイクロソフトのスタッフはすぐに次のように結論付けました。

観察している動作を再現するには情報が不十分です。

最初のコメントと最初の試行(?)以来、彼らは実際に2つの異なるWebサーバーを異なるポートで実行し、問題を再現しました。 Microsoftからの最新のコメントによると、彼らは「将来の修正をターゲットにすることを検討している」という。

3