【CORS 設定】
はじめに
このページでは、REST-API サーバーにおける CORS(Cross-Origin Resource Sharing)設定ファイル の仕様について解説します。
CORS は異なるオリジンからのアクセスを制御する仕組みであり、ブラウザから REST-API を利用する際に重要な役割を持ちます。
なお、設定ファイル名は固定ではなく、メイン処理クラスの
メイン処理クラスでの設定方法は ▶メイン処理クラス実装(設定ファイル指定) を参照してください。
CORS は異なるオリジンからのアクセスを制御する仕組みであり、ブラウザから REST-API を利用する際に重要な役割を持ちます。
なお、設定ファイル名は固定ではなく、メイン処理クラスの
$setting_files['cors'] プロパティにより任意の名称を指定できます。メイン処理クラスでの設定方法は ▶メイン処理クラス実装(設定ファイル指定) を参照してください。
設定ファイルの構造
CORS 設定ファイルは、
主な項目は次の 2 つです。
なお、Access-Control-Allow-Methods はルーティング設定を参照して自動生成されます。
return によって連想配列を返す形式で記述します。主な項目は次の 2 つです。
allow_origins:許可するオリジンのリストallow_headers:許可するリクエストヘッダのリスト
なお、Access-Control-Allow-Methods はルーティング設定を参照して自動生成されます。
各パラメータの説明
allow_origins
Access-Control-Allow-Origin ヘッダに設定される許可オリジンのリストです。file://スキームを利用する場合は必須- ローカル開発では
http://localhost:10000などを指定 - 複数オリジンを許可する場合は配列に追加
'allow_origins' => [
'http://localhost:10000',
'https://example.com'
]
allow_headers
Access-Control-Allow-Headers に設定される許可ヘッダのリストです。Content-Typeを指定するケースが一般的- 認証が必要な API では
Authorizationを追加することもある
'allow_headers' => ['Content-Type', 'Authorization']
プリフライトリクエストの挙動
ブラウザは、特定の条件を満たすクロスオリジン通信を行う際、
本リクエストの前に プリフライトリクエスト(Preflight Request) を送信します。
プリフライトリクエストは
SOCKET-MANAGER Framework では、Allow-Methods はルーティング設定から自動生成されるため、 CORS 設定ファイル側で明示的に指定する必要はありません。
プリフライトリクエストは
OPTIONS メソッドで送信され、次の情報を確認します。- 許可されている HTTP メソッド(Access-Control-Allow-Methods)
- 許可されているリクエストヘッダ(Access-Control-Allow-Headers)
SOCKET-MANAGER Framework では、Allow-Methods はルーティング設定から自動生成されるため、 CORS 設定ファイル側で明示的に指定する必要はありません。
自動設定される項目
Access-Control-Allow-Methods
このヘッダは ルーティング設定(setting-routing)を参照して自動生成 されます。- ルートに定義された HTTP メソッド(GET / POST / PUT / DELETE など)が自動反映
- CORS 設定ファイル側で指定する必要はない
ルート定義の HTTP メソッドの詳細については ▶ルーティング設定(routes セクションの構造) を参照してください。
スキャフォールディング(CLI)
CORS 設定ファイルは CLI コマンドで自動生成できます。
php worker custom:setting-cors <カスタム名>
<カスタム名>は任意の名前を指定できます。- 生成したファイル名はメイン処理クラス側で設定可能です。
- 同名ファイルが存在する場合は警告して終了します。
<プロジェクトルート>/setting/
おわりに
このページでは、REST-API サーバーにおける CORS 設定ファイルの仕様 を解説しました。
CORS はブラウザからのアクセスにおいて重要な役割を持つため、適切な設定が必要です。
より詳細なルーティング仕様については ▶ルーティング設定 も参照してください。
CORS はブラウザからのアクセスにおいて重要な役割を持つため、適切な設定が必要です。
より詳細なルーティング仕様については ▶ルーティング設定 も参照してください。