python Simple HTTP ServerでホストされているhtmlファイルからXHRクロスオリジンリクエストを作成しました。
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://www.facebook.com/favicon.ico", true);
xhr.withCredentials = true;
xhr.onload = function () {
console.log(xhr.responseText);
};
xhr.send();
Chrome開発者ツールを開き、Networkタブでリクエストを監視します。 Networkタブに、サーバー "facebook.com"に対して直接要求が1つ表示されます。
私が異常だと思った行動は次のとおりです。
ここで言及されているドキュメントによると、直接XHRリクエストが行われる前にプリフライトリクエストが表示されることを望んでいました。 link
リクエストはステータスコードを取得しました:* 200 **これは異常です。 SOPはクロスドメインリクエストであるため、この種のリクエストをブロックする必要があります。
しかし、Chrome開発者ツールのConsoleタブに、期待される動作:
CORSヘッダーを確認するプリフライトリクエストは、XHRなしで実行できないリクエストがXHRなしでは実現できない場合にのみ実行されます。あなたの場合、特別なヘッダーなしで単純なGETリクエストを実行しているだけで、同じURLまたは類似の画像を含めることによっても実行できます。したがって、リクエストをプリフライトする必要はありません。
詳細については、「単純」と見なされてプリフライトされないリクエストと、単純ではないリクエストを参照してください。MozillaDeveloper NetworkのCORSへのドキュメントの Preflighted Requests を参照してください。