CORS の有効化

Cross-Origin Resource Sharing (CORS) は、ドメイン間のデータ共有を可能にする W3C 標準仕様です。CORS により、1 つのドメインで実行している Web アプリケーションが他のドメインからのデータにアクセスできるようになります。Spectrum™ Technology Platform サーバー上で CORS を有効にすることで、他のドメインでホストされている Web アプリケーションに Spectrum™ Technology Platform Web サービスへのアクセスを許可できます。

例えば、webapp.example.com でホストされている Web アプリケーションがあるとします。この Web アプリケーションには、spectrum.example.com でホストされている Spectrum™ Technology Platform Web サービスを呼び出す JavaScript 関数が含まれています。CORS がない場合は、プロキシ サーバーを使用してこの要求を処理する必要があり、それによって実装は複雑になります。CORS があれば、プロキシ サーバーは必要ありません。webapp.example.com を "allowed origin" (許可された生成元) として指定することで、Spectrum™ Technology Platform がドメイン webapp.example.com からの Web サービス要求に応答することを許可します。

Spectrum™ Technology Platform サーバー上で CORS を有効にするには

  1. Spectrum™ Technology Platform サーバーを停止します。
  2. 次のファイルをテキスト エディタで開きます。

    SpectrumLocation/server/app/conf/spectrum-advanced.properties

  3. 次のパラメータを編集します。
    spectrum.jetty.cors.enabled

    このプロパティに true を設定して CORS を有効にします。デフォルトは false です。

    spectrum.jetty.cors.allowedOrigins

    Spectrum™ Technology Platform サーバー上のリソースへのアクセスを許可された生成元のカンマ区切りリスト。デフォルト値は http://localhost:8080,http://localhost:443 で、デフォルトの HTTP ポート 8080 とデフォルトの HTTPS ポート 443 を使用したリソースへのアクセスを許可します。

    例えば http://*.domain.com のように、許可された生成元に 1 つ以上のアスタリスク ("*") が含まれる場合、アスタリスクは .* に変換され、ドット文字 (".") は "\." とエスケープされて、その結果の許可された生成元が正規表現として解釈されます。つまり、許可された生成元として、より複雑な表現が使用できます。例えば https?://*.domain.[a-z]{3} は、http または https、複数のサブドメイン、そして任意の 3 文字のトップレベル ドメイン (.com、.net、.org など) にマッチします。

    spectrum.jetty.cors.allowedMethods

    Spectrum™ Technology Platform サーバー上のリソースにアクセスするときに使用できる HTTP メソッドのカンマ区切りリスト。デフォルト値は POST,GET,OPTIONS,PUT,DELETE,HEAD です。

    spectrum.jetty.cors.allowedHeaders

    Spectrum™ Technology Platform サーバー上のリソースにアクセスするときに使用できる HTTP ヘッダのカンマ区切りリスト。デフォルト値は X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept です。値がアスタリスク ("*") 1 つである場合、すべてのヘッダが使用可能です。

    spectrum.jetty.cors.preflightMaxAge

    クライアントが preflight 要求をキャッシュできる秒数。デフォルト値は 1800 秒、つまり 30 分です。

    spectrum.jetty.cors.allowCredentials

    リソースに対し、資格情報付きの要求が可能かどうかを示します。デフォルト値は true です。

  4. ファイルを保存して閉じます。
  5. Spectrum™ Technology Platform サーバーを開始します。