Provider Filter
https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#filters
Spring-Web 提供了一些有用的 Filter。
基本 Filter
過濾器 Filter表單資料 - Form data (內建)
Servlet API 本來僅支持 HTTP GET、POST 的支持。
spring-web 提供了FormContentFilter
,可以攔截 HTTP PUT 、PATCH、DELETE 的請求。
application/x-www-form-urlencoded 從請求中取得表單資料,並重新包裝通過 ServletRequest 讓其可以取得。
轉送標頭 - Forwarded Header (可選)
當請求經過負載平衡、或其他代理時,可能造成 host、port、schema 改變。
ForwardedHeaderFilter
是一個 servlet Filter,用於修改請求,以避免進一步的影響。
其依賴於 RequestContextFilter
,若要使用必須先設定此 Filter。
轉送標頭出於安全考量,無法得知是 代理加的 或是 惡意的客戶端加的,可以透過配置removeOnly=true
,來刪除不需使用的標頭。
淺ETag - Shallow ETag (可選)
可以通過 ShallowEtagHeaderFilter
要寫入回應的內容,以達到 HTTP 緩存的優化。
此策略可節省網絡帶寬(network bandwidth),但不會節省CPU,因為必須為每個請求計算完整且合適的回應。
CORS (內建)
Spring MVC 預設以對 CORS(跨域資源共享) 提供細粒度的支持。
細節參考: https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-cors
也可以透過 CorsFilter
。若與 Spring-security 一起使用,其中已包含對 CorsFilter
支持。
細節參考: https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-cors-filter
Last updated
Was this helpful?