web-dev-qa-db-ja.com

CORS Originを使用したWebアプリケーション:*認証ヘッダーを使用

ここで述べたように、 https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS at "Credentialed requests and wildcards"。見積もり:

認証されたリクエストに応答するとき、サーバーは "*"ワイルドカードを指定する代わりに、Access-Control-Allow-Originヘッダーの値にオリジンを指定する必要があります。

上記の例のリクエストヘッダーにはCookieヘッダーが含まれているため、Access-Control-Allow-Originヘッダーの値が「」の場合、リクエストは失敗します。しかし、それは失敗しません:Access-Control-Allow-Originヘッダーの値が "ではなく" http://foo.example "(実際のOrigin)であるため"ワイルドカードを使用すると、資格情報を認識するコンテンツが呼び出し元のWebコンテンツに返されます。

したがって、これを正しく読んだ場合、Access-Control-Allow-Origin*に設定されていることになります。 CORSリクエストは認証情報では実行できないため、たとえばAuthorization: Bearer 123ヘッダーを使用します。

これは、リクエストがWebアプリケーション(SOP)とは異なるオリジンからのものである場合にのみ適用されます。そうしないと、WebアプリケーションでAccess-Control-Allow-Origin: *Authorization: Token 123を使用できなくなります。

私はこれを正しく理解しましたか?

2
SaAtomic

かなり、はい。ここで重要なのは、ブラウザが同じドメインへのリクエストのACAOヘッダーに注意を払わないことです。したがって、ACAOヘッダーに好きなものを置くことができ、同じドメインで実行されているアプリケーションで機能します。

別のドメインへのリクエストの場合、ブラウザーはACAOヘッダーに注意を払います。Originが受け入れられる場合、他のAccess-Controlヘッダーが含まれているものを調べ、それらに基づいてアクションを実行します(たとえば、認証ヘッダーを無視する場合)ワイルドカードがある、またはAccess-Control-Allow-Credentials: trueヘッダーがない)

2
Matthew