セキュリティ・認証 / Webセキュリティ
CORSとは
Cross-Origin Resource Sharing。別オリジンからブラウザ経由でAPIを呼べる条件を決める仕組みです。
用語集内のカードを見るセキュリティ・認証 / Webセキュリティ
Cross-Origin Resource Sharing。別オリジンからブラウザ経由でAPIを呼べる条件を決める仕組みです。
用語集内のカードを見るCORSを、定義だけで終わらせず、現場で出てくる場面、確認材料、見落としやすい点、関連語とのつながりまで順に確認できます。
実務メモ
CORSはSPAとAPIを別ドメインで構成する場合、認証付きAPI、CDN配信、管理画面、外部SaaS連携で効きます。curl成功でもブラウザだけ失敗する調査で重要です。
証跡にはフロントエンドOrigin、API URL、OPTIONS応答、ACAO、Credentials、Allow-Methods、Allow-Headers、Vary: Origin、ブラウザエラー全文を残します。
Access-Control-Allow-Originの*とCredentialsは併用できません。OPTIONSをWAFや認証前処理で拒否したり、Vary: OriginがなくCDNで誤キャッシュされると再現が不安定になります。
CORS(Cross-Origin Resource Sharing)は、ブラウザが別オリジンのAPI応答をJavaScriptへ渡してよいかを判断する仕組みです。サーバー間通信の許可設定ではなく、ブラウザ側の安全ルールです。
実務では、Origin、Access-Control-Allow-Origin、Access-Control-Allow-Credentials、Methods、Headers、OPTIONSプリフライト、Vary: Origin、CookieやAuthorizationヘッダーを確認します。
証跡には、フロントエンドOrigin、API URL、リクエストヘッダー、プリフライト応答、CORS応答ヘッダー、認証情報有無、ブラウザエラー全文を残します。
CORSはブラウザが適用するため、curlやサーバー間通信が成功しても、ブラウザからのJavaScript呼び出しは失敗することがあります。疎通確認だけでは判断できません。
調査では、ブラウザ開発者ツールのNetworkとConsoleを確認し、OPTIONSプリフライト、本リクエスト、レスポンスヘッダーを分けて見ます。
CookieやAuthorizationヘッダーを含むリクエストでは、Access-Control-Allow-Credentialsの扱いが重要です。この場合、Access-Control-Allow-Originに*を使えません。
認証付きAPIでは、許可するOriginを明示し、Vary: Originでキャッシュ差分を扱います。CDNやプロキシがCORS応答を誤って共有しないようにします。
カスタムヘッダー、JSON POST、PUT/DELETEなどでは、ブラウザが事前にOPTIONSプリフライトを送ることがあります。API側やWAFがOPTIONSを拒否すると、本リクエスト前に失敗します。
Access-Control-Allow-MethodsやAccess-Control-Allow-Headersに必要な値がない場合も失敗します。認証ヘッダー、Content-Type、X-Requested-Withなどを確認します。
CORS対応では、許可Origin、対象API、認証情報有無、プリフライト要件、CDNキャッシュ、Vary、ブラウザエラーを残します。フロントエンド、API、認証、CDNの責任境界がまたがるためです。
引き継ぎでは、フロントエンド担当、API担当、認証基盤担当、関連語としてACAO、Origin、Cookie、CSRFを残すと確認しやすくなります。
同じ主要カテゴリの用語をまとめて確認できます。現在の用語を起点に、前後の用語へ進むと文脈を保ったまま読み進められます。