ドキュメント

§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.ForwardedHeaderHandlerplay.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フィルターの設定


このドキュメントに誤りを見つけましたか? このページのソースコードはこちらにあります。ドキュメントガイドラインを読んだ後、プルリクエストを送信してください。質問やアドバイスがあれば、コミュニティフォーラムにアクセスして、コミュニティとの会話を開始してください。