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内。
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才出现的这个问题,那就从这里入手
既然是整合了spring security才出现的这个问题,那就从这里入手
sameOrigin() 会返回 HeadersConfigurer对象,那么,去看一下这个对象在官网上是怎么解释的。
首先,有三个方法
官网上对HeadersConfigurer的说明
很明显,该类设置了默认值为DENY。到此,问题解决!