§跨來源資源分享
Play 提供一個實作跨來源資源分享 (CORS) 的篩選器。
CORS 是一種協定,允許網頁應用程式跨不同網域從瀏覽器發出請求。完整的規格可在此處找到 這裡。
§啟用 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"
被視為有效的來源,且可以列入 allowedOrigins 白名單中,以允許具有非階層式架構的來源,例如file:
和data
:透過傳送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
在這個文件中發現錯誤?此頁面的原始程式碼可以在 這裡 找到。在閱讀 文件指南 後,請隨時提交拉取請求。有問題或建議要分享嗎?前往 我們的社群論壇 與社群展開對話。