文件

§重新導向 HTTPS 篩選器

Play 提供一個篩選器,可自動將所有 HTTP 要求重新導向到 HTTPS。

§啟用 HTTPS 篩選器

若要啟用篩選器,請將其新增至 play.filters.enabled

play.filters.enabled += play.filters.https.RedirectHttpsFilter

預設情況下,重新導向僅在 Prod 模式中發生。若要覆寫此設定,請設定 play.filters.https.redirectEnabled = true

§判斷安全要求

如果 request.secure 為 true,則篩選器會評估要求是否安全。

此邏輯取決於為 Play 的 HTTP 引擎設定的 受信任代理。內部而言,play.core.server.common.ForwardedHeaderHandlerplay.api.mvc.request.RemoteConnection 會共同判斷傳入要求是否符合「安全」的條件,表示要求在某個時間點已透過 HTTPS 傳遞。

當篩選器已啟用時,任何不安全的請求都會被重新導向。

§嚴格傳輸安全性

嚴格傳輸安全性」標頭用於指示何時應始終使用 HTTPS,並新增至安全要求。僅當已啟用重新導向時,才會新增 HSTS 標頭。

預設為「max-age=31536000; includeSubDomains」,並可透過將下列內容新增至 application.conf 來明確設定

play.filters.https.strictTransportSecurity="max-age=31536000; includeSubDomains"

也可以設定 play.filters.https.strictTransportSecurity = null 來停用 HSTS。

請注意,Strict-Transport-Security 標頭會指示瀏覽器對所有傳送至該主機名稱的要求優先使用 HTTPS,因此如果您在開發模式中啟用篩選器,標頭會影響使用該主機名稱開發的其他應用程式(例如 localhost:9000)。如果您想避免這種情況,請在開發中為每個應用程式使用不同的主機(app1:9000app2:9000 等),或是在開發模式中完全停用 HSTS。

§重新導向程式碼

篩選器使用 HTTP 程式碼 308 重新導向,這是一種永久重新導向,根據 RFC 7238,不會變更 HTTP 方法。這適用於絕大多數瀏覽器,但如果您使用的是較舊的瀏覽器,則可以變更重新導向程式碼

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 篩選器


在此文件發現錯誤?此頁面的原始碼可在此處找到 here。在閱讀 文件指南 後,請隨時貢獻一個 pull request。有問題或建議要分享?前往 我們的社群論壇 與社群展開對話。