これをもう少しよく理解したいと思います。現在使用しているメンタルモデルは、次のように機能します。
- foo.comでホストされているJSは、bar.comでホストされているリソースにアクセスしたいと考えています。これは、bar.comがこのリクエストを歓迎していることを示すことができない限り、ブラウザがユーザーを公開することを好むようなものではありません。
- したがって、foo.comJSは基本的にリクエストを2つに分割します。まず、XMLHttpRequestオブジェクトを介して適切な種類(GET、POSTなど)のデータレスリクエストを送信します。bar.comのサーバーは、Access-Control-Allow-Originヘッダーが含まれる場合と含まれない場合がある、基本的にすべての要求に通常応答するものを返します。(編集:これは誤解でした-以下のapsillersによる優れたコメントを参照してください)
- ブラウザがそのようなヘッダーを取得した場合、ブラウザはそれをスキャンしてOrigin(この場合はfoo.com)を探します。存在する場合は、送信を要求された実際の要求の送信に進みます。そうでなければ、それは拒否します。(編集:これも完全に正しくありませんでした)
このモデルが正しければ、ブラウザがこの予備リクエストでOriginヘッダーを送信する理由について混乱しています。一致のチェックはクライアント側で行われませんか?このヘッダーを送信すると何が達成されますか?