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


   关于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,如下:

    
        httpHeaderSecurity
        org.apache.catalina.filters.HttpHeaderSecurityFilter
        
            antiClickJackingOption
            SAMEORIGIN
        
        true
    
    
    
        httpHeaderSecurity
        /*
    

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


    
    	
    
   这样就把Spring 4 Security中的X-Frame-Options的默认DENY改掉了!

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

    


你可能感兴趣的:(Java,Web开发)