説明クロスドメインリクエストセット - Stone.Zhou

逐語https://www.dazhuanlan.com/2019/08/26/5d632d8c51389/


2つのカテゴリに分類されCORSのHTTPリクエストは、クロスドメインのリソース共有の異なるタイプが異なる戦略で交渉しました。

シンプルなクロスドメインリクエスト。

以下のHTTPリクエストが発生すると、ブラウザが考える、単純なクロスドメインリクエストです:

1)要求は、GET、HEAD、またはPOSTであり、そしてリクエストがPOST時間である場合、コンテンツタイプは、application / x-www-フォーム-でなければならない URLエンコード、マルチパート/フォームデータまたはで普通値のテキスト/。
2)。何のカスタムHTTPリクエストヘッダはありません。

シンプルなクロスドメインリクエストの場合は、実行するブラウザは、HTTPリクエストヘッダの起源、で追加されたJavaScriptのスクリプトは、他のドメインへのサーバへのリソース要求に充填されたドメイン。サーバは、応答ヘッダにアクセス制御-許可原点ヘッダを付加し、構成によれば、簡単なクロスドメインの要求、リソース許可を受信した場合。ブラウザが応答を受信した後、アクセス制御-許可-起源のヘッダを参照して 、 現在のフィールドが許可されていた場合、その結果はに返されたJavaScriptそうでなければ、ブラウザはこの応答を無視します。

プリフライト(プリフライト)クロスドメインリクエストで。

以下のHTTPリクエストが発生した場合、ブラウザは、事前スクリーニング(プリフライト)とのクロスドメイン要求と見なさの:

1)。HTTP GET、HEAD以外の他の方法、およびPOST(唯一のアプリケーション/ x軸と WWW-form-urlencodedで、マルチパート/フォームデータ、text / plainのコンテンツタイプ) の。
2)要求カスタムHTTPヘッダーが発生しました。

事前スクリーニングとクロスドメインリクエスト(プリフライト)最初の本当のHTTPリクエストを送信する前にプリフライトリクエストOPTIONSを送信し、サーバは要求が本当のクロスドメイン・リソースへのアクセスをサポートするかどうかを検出し、OPTIONS要求によって要求された実際の情報ブラウザが必要ですアクセス・コントロール・リクエスト・メソッドヘッダーとアクセス制御 - 要求ヘッダのヘッダは、単純なクロスドメインの要求に加えて、説明し、ブラウザは、Originヘッダーを追加します。事前スクリーニング、リソース構成権限に応じて、応答ヘッダにアクセス制御 - 許可原点ヘッダを置き、アクセス制御、許可、方法およびアクセス制御 - 許可 - ヘッダヘッダのサーバ要求を受信した後、それぞれ、クロス可能ドメインドメインリソース要求、要求メソッドと要求ヘッダー。加えて、サーバはまた、アクセス制御、最大年齢ヘッダーに追加することができる再送プリフライトを要求することなく、指定された時間にブラウザを可能にするが、この結果をネゴシエートすることができると直接交渉します。OPTIONS要求によって返される結果に基づいて、ブラウザでは、クロスドメイン・リソースへのアクセスのための真の要求を送信するために継続するかどうかを決定します。このプロセスでは、実際の発信者の要求に透明です。

クロスドメイン要求の実現にXMLHttpRequestをサポートはwithCredentialsプロパティによって識別情報(例えば、クッキーやHTTP認証情報としての資格など)を運びます。ブラウザは、サーバーがアクセス制御 - 許可 - 資格のヘッダーを応答しない場合、ブラウザはこの応答を無視する、サーバーに送信された要求の後にクッキーヘッダーを運ぶでしょう。

ここで説明するHTTP要求はAjaxが開始XMLHttpRequestオブジェクトによって定義され、すべてのHTTPリクエストヘッダCORSは、XMLHttpRequestオブジェクトを設けることなく、ブラウザによって充填されます。CORSプロトコルHTTPヘッダ、相談のためのクロスドメインのリソース要求を起動するために使用されるブラウザを処方されている次

  1. 起源。HTTPリクエストヘッダは、要求は、任意のCORSを実行するために必要とされるにも関します。
  2. アクセス・コントロール・リクエスト・メソッド。HTTPリクエスト・ヘッダー、クロスドメインの真の要求を表すために使用される事前スクリーニング(プリフライト)メソッドをリクエスト。
  3. アクセス・コントロール・リクエスト・ヘッダー。HTTPリクエストヘッダは、クロスドメインの事前スクリーニング(プリフライト)との要求が真のカスタムヘッダリスト要求を表すために使用されます。
  4. アクセス制御は許起源を。クロスドメインのリソースアクセス元ドメインを可能にするサーバを指定したHTTPレスポンスヘッダ。ワイルドカード*は、キャリー識別情報(資格)HTTPリクエスト、ワイルドカードを使用することはできません、特定のドメインを指定するために必要なアクセス制御 - 許可 - 起源に応じて、JavaScriptがリソースへのアクセスを可能にする任意のドメインであることができます。
  5. アクセス制御は許方法。HTTPレスポンスヘッダ、サーバは、一般的にプリスクリーニングに応答して、リクエストに使用される許容クロスドメインリソースアクセス要求方法のリストを指定します。
  6. アクセス制御は、-ヘッダを許可します。一般的にプリスクリーニングに応答して、要求に使用されるリストの先頭へのクロスドメインのリソースへのアクセス要求を許可するサーバを指定したHTTPレスポンスヘッダ。
  7. アクセス・コントロール・マックスエイジ。HTTPレスポンスヘッダは、事前スクリーニングのための要求に応答して、このことは、プリフライト応答の有効時間を示します。この間、ブラウザは、再びプリフライト要求を送信することなく、直接、実際の要求を送信する必要があるか否か協議の結果に応じて決定することができます。
  8. アクセス制御は、-資格情報を許可します。HTTPレスポンスヘッダ、識別情報を含む任意のブラウザからのリクエストが、レスポンスヘッダとAccess-Control-Allow-Credentialsを返さない:真、ブラウザが応答を無視します。

おすすめ

転載: www.cnblogs.com/petewell/p/11410496.html