§クロスオリジンリソース共有
Playは、クロスオリジンリソース共有(CORS)を実装するフィルターを提供します。
CORSは、Webアプリケーションが異なるドメイン間でブラウザからリクエストを行うことを許可するプロトコルです。完全な仕様はこちらにあります。
§CORSフィルターの有効化
CORSフィルターを有効にするには、play.filters.cors.CORSFilter
をapplication.conf
に追加します。
play.filters.enabled += "play.filters.cors.CORSFilter"
§CORSフィルターの設定
このフィルターはapplication.conf
から設定できます。設定オプションの完全なリストについては、Playフィルターのreference.conf
を参照してください。
利用可能なオプションには以下が含まれます。
play.filters.cors.pathPrefixes
- パス接頭辞のホワイトリストでパスをフィルタリングします。play.filters.cors.allowedOrigins
- このホワイトリスト内のオリジンからのリクエストのみを許可します。デフォルト値はnull
で、すべてのオリジンを許可することを意味します。値"*"
は特別な意味を持ち、リクエストのオリジンがリスト内の他のオリジンと一致しない場合、Access-Control-Allow-Origin: *
を返します。"null"
は有効なオリジンとして扱われ、file:
やdata:
のような階層的ではないスキームを持つオリジンを許可するために、allowedOrigins
にホワイトリストに追加できます。これにより、Access-Control-Allow-Origin: "null"
が送信されます。これは、敵対的なドキュメントにもレスポンスへのアクセスを許可する可能性があるため、W3Cによって推奨されていません。play.filters.cors.allowedHttpMethods
- プリフライトリクエストのホワイトリストからのHTTPメソッドのみを許可します(デフォルトではすべてのメソッドが許可されます)。play.filters.cors.allowedHttpHeaders
- プリフライトリクエストのホワイトリストからのHTTPヘッダーのみを許可します(デフォルトではすべてのヘッダーが許可されます)。play.filters.cors.exposedHeaders
- レスポンスで公開されるカスタムHTTPヘッダーを設定します(デフォルトではヘッダーは公開されません)。play.filters.cors.supportsCredentials
- クレデンシャルのサポートを無効/有効にします(デフォルトではクレデンシャルのサポートは有効になっています)。play.filters.cors.preflightMaxAge
- プリフライトリクエストの結果をプリフライト結果キャッシュにキャッシュできる期間を設定します(デフォルトは1時間)。play.filters.cors.serveForbiddenOrigins
- ホワイトリストにないオリジンを持つリクエストを非CORSリクエストとして提供するかどうかを有効/無効にします(デフォルトでは禁止されています)。
例えば
play.filters.cors {
pathPrefixes = ["/some/path", ...]
allowedOrigins = ["http://www.example.com", ...]
allowedHttpMethods = ["GET", "POST"]
allowedHttpHeaders = ["Accept"]
preflightMaxAge = 3 days
}
次へ: CSPの設定
このドキュメントに誤りを見つけましたか?このページのソースコードはこちらにあります。ドキュメントガイドラインを読んだ後、プルリクエストを自由に投稿してください。質問やアドバイスを共有したいですか?コミュニティフォーラムにアクセスして、コミュニティとの会話を始めましょう。