クロムタブに1つのWebサイトがあり、別のタブに別のWebサイトがあり、2番目のWebサイトで単一のPOSTコマンドを実行しています-$ .post(...);最初のウェブサイトへ。元々は機能していません(取得:「要求されたリソースに「No'Access-Control-Allow-Origin」ヘッダーが存在します。したがって、Origin「null」はアクセスを許可されていません」)が、「-disable-web- security --user-data-dir =〜/ .chrome-tmp "は、投稿を送信するフラグを立てます。問題は、正確に何が変わったので、それらのフラグを付けた後、投稿が送信されるのかということです。最初は「同一生成元ポリシー」が無効になっていると思いましたが、読んだ後は何の関係もないようです。
--disable-web-security
フラグは、Chromiumが同一生成元ポリシー(SOP)を適用するのを防ぎます。これにより、クロスオリジンPOSTリクエストの応答を読み取りすることができます。
ただし、同一生成元ポリシーに関係なく、POSTリクエストは常にに送信されることに注意してください。その要求のためにサーバー上で行われることはすべて引き続き発生します(リソースの作成、何かの更新など)。これは、クロスドメイン書き込みが許可されることを意味します。
SOPの最も簡単な説明は、オリジン「A」には次の権限があるということです。
- オリジン「B」からのリソースの読み取り:Deny
- オリジン「B」への書き込み:Limit
- オリジン「B」からのリソースの実行:Allow
出典: https://blogs.msdn.Microsoft.com/ieinternals/2009/08/28/same-Origin-policy-part-1-no-peeking/
「制限付き書き込み」の詳細については、 そのブログ投稿のパート2 を参照してください。
Mozillaのドキュメントでも、さまざまな用語を使用して、それをうまく説明しています。 (jQueryの$.post
はXMLHttpRequest
を使用します)
同一生成元ポリシーは、
XMLHttpRequest
または<img>
要素を使用する場合など、2つの異なるオリジン間の相互作用を制御します。これらの相互作用は通常、次の3つのカテゴリに分類されます。
- クロスオリジン書き込みは通常許可されます。例としては、リンク、リダイレクト、フォームの送信があります。まれにしか使用されない特定のHTTPリクエストには preflight が必要です。
- クロスオリジン埋め込みは通常許可されています。例を以下に示します。
- クロスオリジン読み取りは通常許可されていませんが、埋め込みによって読み取りアクセスがリークされることがよくあります。たとえば、埋め込み画像の幅と高さ、埋め込みスクリプトのアクション、または 埋め込みリソースの可用性 を読み取ることができます。
出典: https://developer.mozilla.org/en-US/docs/Web/Security/Same-Origin_policy#Cross-Origin_network_access