§Cross-Origin Resource Sharing
Play は Cross-Origin Resource Sharing (CORS) を実装したフィルタを備えています。
CORS は、web アプリケーションがブラウザから異なるドメインにリクエストを送信することのできるプロトコルです。完全な仕様は ここ で確認することができます。
§CORS フィルタの有効化
CORS フィルタを有効にするには、build.sbt
内の libraryDependencies
に Play filters プロジェクトを追加してください:
libraryDependencies += filters
ここで、この filters に CORS フィルタを追加しますが、通常これはプロジェクトルートに Filters
クラスを作成することで実現します:
- Scala
-
import javax.inject.Inject import play.api.http.HttpFilters import play.filters.cors.CORSFilter class Filters @Inject() (corsFilter: CORSFilter) extends HttpFilters { def filters = Seq(corsFilter) }
- Java
-
import play.api.mvc.EssentialFilter; import play.filters.cors.CORSFilter; import play.http.HttpFilters; import javax.inject.Inject; public class Filters implements HttpFilters { @Inject CORSFilter corsFilter; public EssentialFilter[] filters() { return new EssentialFilter[] { corsFilter }; } }
§CORS フィルタの設定
このフィルタは application.conf
で設定することができます。設定オプションの全リストは、Play フィルタの reference.conf
を参照してください。
利用できるオプションには以下のようなものがあります:
play.filters.cors.pathPrefixes
- パス接頭辞のホワイトリストによるフィルタパスplay.filters.cors.allowedOrigins
- リクエストを許可するオリジンのみのホワイトリスト (デフォルトはすべてのオリジンを許可)play.filters.cors.allowedHttpMethods
- プリフライトリクエストに使える HTTP メソッドのみのホワイトリスト (デフォルトはすべてのメソッドを許可)play.filters.cors.allowedHttpHeaders
- プリフライトリクエストに使える HTTP ヘッダのみのホワイトリスト (デフォルトはすべてのヘッダを許可)play.filters.cors.exposedHeaders
- レスポンスに含めるカスタム HTTP ヘッダ (デフォルトは含まれるヘッダ無し)play.filters.cors.supportsCredentials
- クレデンシャルサポートの無効/有効 (デフォルトはクレデンシャルサポート有効)play.filters.cors.preflightMaxAge
- プリフライトリクエストの結果をキャッシュできる期間 (デフォルトは一時間)
例:
play.filters.cors {
pathPrefixes = ["/some/path", ...]
allowedOrigins = ["http://www.example.com", ...]
allowedHttpMethods = ["GET", "POST"]
allowedHttpHeaders = ["Accept"]
preflightMaxAge = 3 days
}
Next: WS SSL の設定
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。