• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Web返回响应 X-Frame-Options 设置

JAVA相关 supingemail 2810次浏览 0个评论

.

目录

一、问题

二、方案

三、代码  

四、总结

一、问题

   在Springboot做系统的页面嵌入的时候,报错如下:

Refused to display ‘http://xxx.com/#/aa/bb’ in a frame because it set ‘X-Frame-Options’ to ‘sameorigin’.

出现这个报错的原因是因为:要添加 X-frame-options 响应头设置

二、方案

  要添加 X-frame-options ,赋值的方法有如下三种:

(1)DENY:不能被嵌入到任何iframe或frame中。

(2)SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。

(3)ALLOW-FROM uri:只能被嵌入到指定域名的框架中。

防止某些重要网页被其他网站框架导入,可以给页面增加X-Frame-Options响应头,这样浏览器会依据X-Frame-Options的值来控制iframe框架的页面是否允许加载显示出来,IE下的效果如下(此内容无法再框架中显示。为了帮助保护在此网站中输入的信息安全,此内容的发行者不允许在框架中显示该信息),其他非IE核心浏览器会显示空白内容。

三、代码  

那么在 springboot 项目中,该如何设置那访问的方法呐 ?具体做法如下:

@EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { //设置X-Frame-Options 响应头,可以嵌套ifram中去. http.headers() .frameOptions() .disable(); /* 以SAMEORIGIN 方式嵌入,其他两种类似如此 http.headers() .frameOptions() .sameOrigin() .httpStrictTransportSecurity() .disable(); */ } }

在 SpringMVC 中,可以实现如下:

 class FrameTao implements Filter {  
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {  
        HttpServletRequest request = (HttpServletRequest) req;    
        HttpServletResponse response = (HttpServletResponse) res;    
        response.setHeader(“x-frame-options”, “SAMEORIGIN”);    
        chain.doFilter(request, response);  
    }       
}  

四、总结

目前用到的解决办法:

  1、配置apache

(如果是在本地的话,就是在httpd.conf里面配置;如果是linux(ubuntu的话)就是在apache2.conf里面),找个空的位置加入这行代码,具体看你是选择哪种

<span style="font-size:14px;">Header always append X-Frame-Options SAMEORIGIN</span>  

有可能会遇到一种情况,就是我在服务端配置完apache之后,尝试 Restart Apache 但是报了一个错误:

Invalid command ‘Header’, perhaps misspelled or defined by a module not included in the server configuration

  header的方法模块没有安装,我们需要先自行安装一下:

  先输入 a2enmod heade ,然后需要重启一下Apache,输入service apache2 restart

2、配置Nginx:

  配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置中:

<span style="font-size:14px;">add_header X-Frame-Options SAMEORIGIN;</span>

3、在服务端设置的方式如下:

  Java代码:
  response.addHeader(“x-frame-options”,”SAMEORIGIN”);

 其他解决方案,可以google查看!

 


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Web返回响应 X-Frame-Options 设置
喜欢 (0)

您必须 登录 才能发表评论!

加载中……