Refused to display 'url' in a frame because it set 'X-Frame-Options' to 'deny'.

说明:前端使用layui。tab嵌套iframe,在加入security之前并无异常。

springmvc 在整合spring security时,浏览器发送请求,出现


解决:在继承WebSecurityConfigurerAdapter的子类的覆盖方法configure(HttpSecurity)里面添加:

http.headers().frameOptions().sameOrigin();



百度查找原因:

既然是在浏览器端发送请求时出的问题,那么先看一下请求信息,如图,看到下面图中圈出的地方,果然发现了

X-Frame-Options:DENY


首先我们看看 X-Frame-Options是什么?

X-Frame-Options是一个HTTP标头(header),用来告诉浏览器这个网页是否可以放在iFrame内;

X-Frame-Options: DENY     //表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
X-Frame-Options: SAMEORIGIN    //表示该页面可以在相同域名页面的 frame 中展示
X-Frame-Options: ALLOW-FROM http://caibaojian.com/   //表示该网页只能放在http://caibaojian.com//网页架设的iFrame内。

另外查了最新的资料,还可以直接通过meta标签来设置,不需要放在http头部请求中了。·

<meta http-equiv="X-Frame-Options" content="deny">

但是这种方式对我来说没起作用,目前还不知道原因。
那么从前端解决不行久从后端解决,如下图所示
既然是整合了spring security才出现的这个问题,那就从这里入手


sameOrigin() 会返回 HeadersConfigurer对象,那么,去看一下这个对象在官网上是怎么解释的。

首先,有三个方法


官网上对HeadersConfigurer的说明


很明显,该类设置了默认值为DENY。到此,问题解决!

展开阅读全文

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