- CORS (Cross-Origin Resource Sharing)
- クロスオリジンリソース共有。W3C標準。HTTPヘッダーフィールドを追加することで、サーバーがどのオリジンからのリソースアクセスを許可するかを宣言できるようにします。モダンブラウザにおけるクロスオリジン問題の公式ソリューションです。
- 同一オリジンポリシー (Same-Origin Policy)
- ブラウザのコアセキュリティメカニズム。プロトコル、ドメイン、ポートの3つがすべて完全に同一の場合のみ同一オリジンとみなされ、異なるオリジンのJavaScriptはデフォルトで互いのリソースを読み取ることができません。
- プリフライトリクエスト (Preflight Request)
- 非単純クロスオリジンリクエストに対してブラウザが自動的に先送りするOPTIONSメソッドリクエスト。後続の実リクエストが許可されるかどうかをサーバーに問い合わせ、プリフライトが通過した後にのみ実リクエストを送信します。
- 単純リクエスト (Simple Request)
- 特定の条件(GET/HEAD/POSTメソッド、セーフリストヘッダーのみ、特定のContent-Type)を満たすクロスオリジンリクエスト。プリフライトを送信する必要がなく、直接実リクエストを送信します。
- Access-Control-Allow-Origin (ACAO)
- CORSのコアレスポンスヘッダー。リソースへのアクセスを許可するオリジンを指定します。具体的なオリジンURIまたはワイルドカード*を指定できますが、クレデンシャルを含む場合は*は使用できません。
- Access-Control-Allow-Methods (ACAM)
- プリフライトレスポンスヘッダー。サーバーがサポートするすべてのHTTPメソッドを列挙し、複数のメソッドはカンマで区切ります。
- Access-Control-Allow-Headers (ACAH)
- プリフライトレスポンスヘッダー。サーバーが許可するすべてのリクエストヘッダーフィールドを列挙します。フロントエンドがカスタムヘッダーを送信する場合はここで宣言する必要があります。
- Access-Control-Allow-Credentials (ACAC)
- レスポンスヘッダー。ブール値trueはクロスオリジンリクエストでCookie、Authorizationなどのクレデンシャルの送信を許可することを示します。これを設定する場合、Allow-Originは*にできません。
- Access-Control-Max-Age (ACMA)
- プリフライトレスポンスヘッダー。プリフライト結果のキャッシュ時間を秒単位で指定します。適切に設定するとOPTIONSリクエストが削減されパフォーマンスが向上します。
- Vary: Origin
- レスポンスヘッダー。CDN/プロキシに対してレスポンスコンテンツがOriginヘッダーに応じて変化することを伝えます。キャッシュ時にOriginをキャッシュキーの一部として含める必要があり、クロスオリジンレスポンスのキャッシュ不整合を防ぎます。
- CORSセーフリストリクエストヘッダー (CORS-safelisted request headers)
- Allow-Headersで宣言しなくても送信できるリクエストヘッダー。Accept、Accept-Language、Content-Language、Content-Type(特定の値)などが含まれます。
- 禁止ヘッダー名 (Forbidden header name)
- ブラウザがJavaScriptによるプログラム的な設定を禁止しているリクエストヘッダー。Host、Connection、Cookie、Originなどで、これらのヘッダーはブラウザによって自動的に制御されます。
- クレデンシャル付きリクエスト (Credentialed Request)
- Cookie、HTTP認証情報、TLSクライアント証明書などの身分証明情報を含むクロスオリジンリクエスト。フロントエンド・バックエンドでwithCredentialsとAllow-Credentialsを設定する必要があります。
- Access-Control-Expose-Headers
- レスポンスヘッダー。フロントエンドJavaScriptがアクセスできるレスポンスヘッダーを列挙します。デフォルトでは少数の基本ヘッダーのみアクセス可能で、カスタムレスポンスヘッダーはここで宣言する必要があります。
- OPTIONS メソッド
- HTTPメソッドの1つ。サーバーがサポートする通信オプションを取得するために使用されます。CORSはこれを使用してプリフライトリクエストを送信し、許可されるメソッド、ヘッダー、クレデンシャルなどを問い合わせます。
- Origin リクエストヘッダー
- ブラウザが自動的に追加するリクエストヘッダー。現在のリクエストがどのオリジン(プロトコル+ドメイン+ポート)から来ているかを示します。サーバーはこのヘッダーに基づいてクロスオリジンを許可するかどうかを判断します。
- crossorigin 属性
- HTML要素(script、img、linkなど)の属性。CORSを有効にしてリソースを読み込むかどうかを指定します。値はanonymous(クレデンシャルなし)とuse-credentials(クレデンシャルあり)です。
- no-cors リクエストモード
- fetch APIのモードの1つ。クロスオリジンリクエストの送信を許可しますが、単純リクエストのみ送信可能でJavaScriptはレスポンスコンテンツを読み取れません。不透明レスポンス(Opaque Response)の送信に相当します。