ブラウザのクロスオリジン制限は、サーバーが、スクリプト、画像、スクリプト、およびスタイルシートの要求を既に許可しているものよりも既定でスクリプトベースのクロスオリジンXHR /フェッチ要求が何かを行うことを許可しませんimg
,script
、およびlink
要素を使用します。あなたがimg
、script
、または起点Bから画像、スクリプト、またはスタイルシートを埋め込むlink
要素を入れ原点Aでの文書やアプリケーションのためのHTMLマークアップでは、あなたは上のカスタムヘッダーを設定することができる方法はありません
スクリプト、またはスタイルシートの原点からの要求。
したがって、スクリプトによるクロスオリジンXHR /フェッチ要求のデフォルトのブラウザ動作は、img
/script
/から開始された同じ動作/制限に一致するように設計されています。 link
マークアップ。
ここでの作業の原則は、サーバー側のコードで誰かが行った仮定を破ってはならないということです。カスタムヘッダーを含むブラウザーで実行されているドキュメントやアプリケーションからの要求を受信しない、 img
/script
/link
を使用してください。
しかし、CORSプロトコルの目的は、サーバがオプトインしているデフォルトの動作よりも緩いものにできるようにすることです。そこで彼らは、リクエストヘッダのためにあまり厳密行動に選ぶことができ、特定の方法は、彼らはスクリプトクロスオリジンXHRが/へのリクエストを取得できるようにしたい正確に何リクエストヘッダをAccess-Control-Allow-Headers
を送信するために選択し、テーラー/チューニング/コントロールにそれを使用することができています作る。
Access-Control-Allow-Headers
を送信することでオプトインしない場合、ブラウザはフロントエンドJavaScriptコードからのスクリプトベースのクロスオリジンXHR /フェッチ要求に驚く/予期せぬことをするつもりはないと確信することができます彼らはオプト・インしていません。
明らかに、CORSではデフォルトの制限が課せられていません。代わりに、これらの制限は、ブラウザーが従うデフォルトの同じ起点ポリシーの一部であり、https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policyとhttps://en.wikipedia.org/wiki/Same-origin_policyのような場所で文書化されています。だから、CORSは、ブラウザに特定のリソースに対する厳しい制限を適用しないように要求するときに、サーバーが選択できるようにする手段に過ぎません。
特定のリソースへのアクセスを制限するために、その唯一。あなたのウェブサイト/モバイルアプリケーションだけではなく、すべての人にAPIを提供したくない場合もあります。 –
@AndreiAlexandruブラウザがカスタムヘッダーを送信しないようにすることはできますが、他の人が手動で行うことを防ぐことはできません。 – Bergi