spring Security下,X-Frame-Options默认为DENY,非Spring Security环境下,X-Frame-Options的默认大多也是DENY,这种情况下,浏览器拒绝当前页面加载任何Frame页面,设置含义如下:
DENY:浏览器拒绝当前页面加载任何Frame页面 SAMEORIGIN:frame页面的地址只能为同源域名下的页面 ALLOW-FROM:origin为允许frame加载的页面地址。
在tomcat8以后的版本中,可以通过在web.xml中定义filter设置X-Frame-Options,如下:
- <filter>
- <filter-name>httpHeaderSecurity</filter-name>
- <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
- <init-param>
- <param-name>antiClickJackingOption</param-name>
- <param-value>SAMEORIGIN</param-value>
- </init-param>
- <async-supported>true</async-supported>
- </filter>
-
- <filter-mapping>
- <filter-name>httpHeaderSecurity</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
方法二:
<security:http auto-config="true" use-expressions="true">
<security:headers>
<security:frame-options policy="SAMEORIGIN"/>
</security:headers>
<http use-expressions="true" auto-config="true"> <form-login login-page="/login.do" always-use-default-target="false" /> <logout invalidate-session="true" logout-url="/logout.do" logout-success-url="/login.do"/> <!-- 免登录验证,当session还在,防问是会自己登录 --> <remember-me/> <custom-filter before="FILTER_SECURITY_INTERCEPTOR" ref="myFilter"/> <access-denied-handler ref="accessDeniedHandler"/> <!-- 4.0以后默认打开csrf,不允许post,设置为不打开 --> <csrf disabled="true"/> <!-- 4.0以后X-Frame-Options的默认大多也是DENY,这种情况下,浏览器拒绝当前页面加载任何Frame页面 --> <headers> <frame-options policy="SAMEORIGIN"/> </headers> </http>
|