HTTP Access-Control-Allow-Originヘッダーを用いて、複数の別オリジンのフロントエンドアプリから、APIを呼び出すためのCORS設定方法をまとめる。
ユースケース
- 以下のようなApacheをWebサーバーとして配置する構成のアプリ(API)を、複数の別オリジンのフロントエンドアプリから呼び出したい場合
実現手段
- Apacheの設定ファイルを、許可するオリジンからのリクエストである場合に
Access-Control-Allow-Origin
ヘッダーを付与するように記述する。
SetEnvIf Origin "^http(s)?://(www\.)?(domain-x\.com|domain-y\.com|domain-z\.com)" ALLOWED_ORIGIN=$0
Header set Access-Control-Allow-Origin %{ALLOWED_ORIGIN}e env=ALLOWED_ORIGIN
- リクエストの
Origin
ヘッダーを正規表現判定する。※判定ルールは環境変数として外出ししても良い。 - マッチしたOriginを変数
ALLOWED_ORIGIN
に代入する。 - レスポンスの
Access-Control-Allow-Origin
ヘッダーにOrigin
ヘッダーの値がセットされる。