过滤器
CorsFilter
org.apache.catalina.filters.CorsFilter是W3C CORS(跨域资源共享)规范的一种实现,在HttpServletResponse中增加Acess-Control-*头,同时保护HTTP响应避免拆分。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> <init-param> <param-name>cors.allowed.origins</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>cors.allowed.methods</param-name> <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value> </init-param> <init-param> <param-name>cors.allowed.headers</param-name> <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value> </init-param> <init-param> <param-name>cors.exposed.headers</param-name> <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value> </init-param> <init-param> <param-name>cors.support.credentials</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>cors.preflight.maxage</param-name> <param-value>10</param-value> </init-param> </filter> <filter-mapping> <filter-name>CorsFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
|
CsrfPreventionFilter
CSRF 跨域请求伪造 CsrfPreventionFilter过滤器提供了基本的CSRF保护,通过生成一个随机数存储到会话中,URL使用该随机数进行编码。当接收到下一个请求时,请求中的随机数与会话中的进行对比,两者相同,请求才会允许
ExpiresFilter
负责设置服务器响应中的Expires头和Cache-Control头的max-age
FailedRequestFilter
参数解析失败时,拒绝该请求,原理是先调用getParameter进行解析参数
可能会消费HTTP的请求体,如果使用该Filter保护请求,为了POST请求可以正常解析,需要在该Filter之前配置SetCharacterEncodingFilter过滤器
RemoteAddrFilter
比较提交请求的客户端ip地址是否符合指定的正则表达式
RemoteHostFilter
比较提交请求的客户端主机域名是否符合指定的正则表达式
RemoteIpFilter
使用X-Forwarded-For来获取最原始的客户端ip
X-Forwarded-For: client,proxy1,proxy2
SetCharacterEncodingFilter
设置编码格式