【CORS 設定】

はじめに

このページでは、REST-API サーバーにおける CORS(Cross-Origin Resource Sharing)設定ファイル の仕様について解説します。

CORS は異なるオリジンからのアクセスを制御する仕組みであり、ブラウザから REST-API を利用する際に重要な役割を持ちます。

なお、設定ファイル名は固定ではなく、メイン処理クラスの $setting_files['cors'] プロパティにより任意の名称を指定できます。

メイン処理クラスでの設定方法は ▶メイン処理クラス実装(設定ファイル指定) を参照してください。

設定ファイルの構造

CORS 設定ファイルは、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) を送信します。

プリフライトリクエストは 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 はブラウザからのアクセスにおいて重要な役割を持つため、適切な設定が必要です。

より詳細なルーティング仕様については ▶ルーティング設定 も参照してください。