§HTTPSリダイレクトフィルター
Playは、すべてのHTTPリクエストを自動的にHTTPSにリダイレクトするフィルターを提供します。
§HTTPSフィルターの有効化
フィルターを有効にするには、play.filters.enabled
に追加します。
play.filters.enabled += play.filters.https.RedirectHttpsFilter
デフォルトでは、リダイレクトは本番モードでのみ発生します。これをオーバーライドするには、play.filters.https.redirectEnabled = true
を設定します。
§セキュアなリクエストの判別
フィルターは、request.secure
がtrueの場合、リクエストをセキュアと評価します。
このロジックは、PlayのHTTPエンジンに設定されている信頼できるプロキシに依存します。内部的には、play.core.server.common.ForwardedHeaderHandler
とplay.api.mvc.request.RemoteConnection
が、受信リクエストが「セキュア」であるための基準、つまりリクエストがどこかでHTTPSを通過したことを満たしているかどうかを判断します。
フィルターが有効になっている場合、セキュアでないリクエストはすべてリダイレクトされます。
§Strict Transport Security
Strict Transport Securityヘッダーは、HTTPSを常に使用する必要があることを示すために使用され、セキュアなリクエストに追加されます。HSTSヘッダーは、リダイレクトが有効になっている場合にのみ追加されます。
デフォルトは「max-age=31536000; includeSubDomains」で、application.conf
に以下を追加することで明示的に設定できます。
play.filters.https.strictTransportSecurity="max-age=31536000; includeSubDomains"
HSTSを無効にするには、play.filters.https.strictTransportSecurity = null
を設定することもできます。
Strict-Transport-Security
ヘッダーは、ブラウザに*そのホスト名へのすべてのリクエスト*でHTTPSを優先するように指示するため、開発モードでフィルターを有効にすると、ヘッダーは、そのホスト名(例: `localhost:9000`)で開発されている他のアプリに影響します。これを回避するには、開発中の各アプリに異なるホスト(`app1:9000`、`app2:9000`など)を使用するか、開発モードでHSTSを完全に無効にします。
§リダイレクトコード
フィルターは、RFC 7238に従ってHTTPメソッドを変更しない永続的なリダイレクトであるHTTPコード308を使用してリダイレクトします。これは、ほとんどのブラウザで機能しますが、古いブラウザで作業する場合は、リダイレクトコードを変更できます。
play.filters.https.redirectStatusCode = 301
§カスタムHTTPSポート
HTTPSサーバーがカスタムポートにある場合、リダイレクトURLはそれを認識する必要があります。ポートが指定されている場合
play.filters.https.port = 9443
Location
ヘッダーのURLには、ポートが明示的に含まれます。例:https://playframework.com:9443/some/url
。
§X-Forwarded-Protoヘッダー
x-forwarded-proto
ヘッダーがhttp
に設定されている場合にのみリダイレクトすることが可能です。これは、application.conf
に以下を追加することで有効にできます。
play.filters.https.xForwardedProtoEnabled = true
次へ:IPフィルターの設定
このドキュメントに誤りを見つけましたか? このページのソースコードはこちらにあります。ドキュメントガイドラインを読んだ後、プルリクエストを送信してください。質問やアドバイスがあれば、コミュニティフォーラムにアクセスして、コミュニティとの会話を開始してください。