最近在写一个springboot+springsecurity Demo,页面以iframe形式来加载页面。
然后浏览器就报错了。
Refused to display 'http://localhost:8080/sys/user' in a frame because it set 'X-Frame-Options' to 'deny'.
百度 “X-Frame-Options”看到一下内容,链接https://developer.mozilla.org/zh-CN/docs/Web/HTTP/X-Frame-Options
使用 X-Frame-Options
X-Frame-Options 有三个值:
DENY
表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
SAMEORIGIN
表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri
表示该页面可以在指定来源的 frame 中展示。
换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。
链接中有解决方法,但是明显和我要的不一样。弄明白了X-Frame-Options 是什么意思,并且以前也没遇见这个问题,大概觉得问题可能是springsecurity拦截了。于是尝试寻找security的配置文件有没有类似方法,果然找到:
http.headers().frameOptions().sameOrigin();
问题解决。