X-Frame-Options Spring Security 跨域访问问题!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/DavyLee2008/article/details/61420751

   关于X-Frame-Options的配置,从网上搜索资料,大部分都描述了Apache、Ngix、IIS如何配置此项,但常用的tomcat如何配置?涉及Spring Security如何处理?这类问题还是没有找到现成的方案,动手折腾好了,遂整理下来,供自己和别人参考!    

    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>

   根据大家的说法,这样的配置会覆盖掉Spring Security中的配置,但在下这里却恰恰相反,还是Spring  4 Security中默认的DENY更加顽固,查Spring Security手册,有点乱,好在看明白了,配置如下:

<security:http entry-point-ref="casAuthenticationEntryPoint"  create-session="always" auto-config="true">
    <security:headers>
    	<security:frame-options policy="SAMEORIGIN"/>
    </security:headers>
   这样就把Spring 4 Security中的X-Frame-Options的默认DENY改掉了!

   据说还有一种办法,那就是自己实现一个filter,我认为和上文所述的第一种方法大同小异,故没有去验证,有兴趣的朋友不妨一试!

    


展开阅读全文

没有更多推荐了,返回首页