CORSの使用方法を理解しようとしていますが、Access-Control-Allow-Credentials
ヘッダーの機能について混乱しています。
ドキュメント は言う
資格情報フラグがtrueの場合に、要求への応答を公開できるかどうかを示します。
しかし、応答が「公開」されていることの意味がわかりません。
このヘッダーがtrueに設定されていることを(trueに設定されている資格情報フラグと組み合わせて)誰が実際に行うかを説明できますか?
デフォルトでは、CORSにはクロスオリジンリクエストのCookieは含まれません。これは、JSON-Pなどの他のクロスオリジンテクニックとは異なります。 JSON-Pには常にリクエストにCookieが含まれており、この動作により クロスサイトリクエストフォージェリー またはCSRFと呼ばれる脆弱性のクラスが発生する可能性があります。
CORSのCSRF脆弱性の可能性を減らすために、CORSでは、サーバーとクライアントの両方に、リクエストにCookieを含めることを認めることを要求します。これを行うと、制御なしで受動的に発生するものではなく、Cookieがアクティブな決定になります。
クライアントコードmustは、withCredentials
のXMLHttpRequest
プロパティをtrue
に設定して、許可を与えます。
ただし、このヘッダーだけでは十分ではありません。サーバーmustはAccess-Control-Allow-Credentials
ヘッダーで応答します。このヘッダーでtrue
に応答するということは、サーバーがCookie(または他のユーザー資格情報)がクロスオリジンリクエストに含まれることを許可することを意味します。
また、クロスオリジン認証要求を機能させるには、 ブラウザがサードパーティのCookieをブロックしていない を確認する必要があります。
同じオリジンまたはクロスオリジンリクエストを行うかどうかに関係なく、サイトをCSRFから保護する必要があることに注意してください(特にリクエストにCookieが含まれる場合)。