サーチ…


備考

クロスオリジンリソース共有は、 AJAXなどの手法を使用して、ドメイン間で動的な要求を行うことができるように設計されています 。スクリプティングはほとんどの作業を行いますが、HTTPサーバーは正しいヘッダーを使用して要求をサポートする必要があります。

クライアント:クロスオリジンリソース共有(CORS)要求を送信する

Originヘッダーを含め、 Originを越えた要求を送信する必要があります。これは、リクエストの発信元を示します。たとえば、からのクロスオリジン・リクエストhttp://example.comhttp://example.org次のようになります。

GET /cors HTTP/1.1
Host: example.org
Origin: example.com

サーバーはこの値を使用して、要求が許可されているかどうかを判断します。

サーバー:CORS要求への応答

CORS要求への応答には、CORSリソースの使用を許可されている発信Access-Control-Allow-Origin示すAccess-Control-Allow-Originヘッダーが含まれている必要があります。このヘッダーは、次の3つの値のいずれかをとります。

  • 起源。これを行うと、 その起源からの要求のみが許可されます。
  • キャラクター* 。これにより、 任意の起点からの要求が許可されます。
  • 文字列nullこれにより、CORS要求は許可されません

たとえば、起源http://example.comからのCORS要求の受信時に、 example.comが許可された発信元である場合、サーバーは次の応答を返します。

HTTP/1.1 200 OK
Access-Control-Allow-Origin: example.com

任意の起源の応答もこの要求を許可する、すなわち:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *

ユーザーの資格情報またはセッションを許可する

ユーザーの資格情報またはユーザーのセッションをCORS要求とともに送信できるようにすることで、サーバーはCORS要求を介してユーザーデータを保持できます。これは、データを提供する前にユーザーがログインしているかどうかをサーバーが確認する必要がある場合に便利です(ユーザーがログインしている場合にのみアクションを実行します。これにより、資格情報とともにCORS要求を送信する必要があります)。

これは、 OPTIONSプリフライト要求に応答してAccess-Control-Allow-Credentialsヘッダーを送信することによって、プリフライトされた要求のサーバー側で実現できます。リソースをDELETEするCORS要求の次の場合を実行します。

OPTIONS /cors HTTP/1.1
Host: example.com
Origin: example.org
Access-Control-Request-Method: DELETE
HTTP/1.1 200 OK
Access-Control-Allow-Origin: example.org
Access-Control-Allow-Methods: DELETE
Access-Control-Allow-Credentials: true

Access-Control-Allow-Credentials: true行は、次のDELETE CORS要求がユーザーの資格情報とともに送信されることを示します。

プリフライトリクエスト

基本的なCORS要求では、次の2つの方法のいずれかを使用できます。

  • 取得する
  • 役職

ほんの少数の選択ヘッダーがあります。 POST CORS要求では、さらに3つのコンテンツタイプのみを選択できます。

この問題を回避するために、他のメソッド、ヘッダー、またはコンテンツタイプを使用する要求は、まずアクセス制御要求ヘッダーを含むOPTIONS要求であるプリフライト要求を発行する必要があります。たとえば、サーバーがDNTヘッダーを含むPUT要求を受け入れるかどうかを確認するプリフライト要求です。

OPTIONS /cors HTTP/1.1
Host: example.com
Origin: example.org
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: DNT

サーバー:プリフライトリクエストに応答する

サーバーがプリフライト要求を受信すると、要求されたメソッドとヘッダーをサポートしているかどうかをチェックし、要求をサポートする能力を示す応答と、その他の許可されたデータ(資格情報など)を返す必要があります。

これらは、アクセス制御のヘッダーの許可で示されます。サーバはまた、プリフライト応答がキャッシュされる期間を示すアクセス制御Max-Ageヘッダを返送することができる。

これは、プリフライトリクエストのリクエスト/レスポンスサイクルが次のようなものになります。

OPTIONS /cors HHTP/1.1
Host: example.com
Origin: example.org
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: DNT
HTTP/1.1 200 OK
Access-Control-Allow-Origin: example.org
Access-Control-Allow-Methods: PUT
Access-Control-Allow-Headers: DNT


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow