最近提出了一个需求:在一个iframe中展现saiku首页
呵呵,这还不简单。
直接<iframe src="http://localhost:8080/saiku" /> 套进去不就完事了吗。。我真是个天才。。
结果:呜呜。。。报错啦。。。
错误提示:Refused to display ‘http://localhost:8080/saiku/‘ in a frame because it set ‘X-Frame-Options‘ to ‘DENY‘.
header里面有一个属性 "X-Frame-Options" 被默认设置成了 "DENY"
好吧,找找看是哪里的问题,找了半天找不见啊。。。
今天来PM说是因为:
Spring-Security 默认是设置了这个 "X-Frame-Options" 属性为DENY,在配置文件里更改下配置就好了
<security:http> <security:headers> <security:frame-options policy="SAMEORIGIN"/> </security:headers> </security:http>
policy 取值说明
DENY 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。 SAMEORIGIN 表示该页面可以在相同域名页面的 frame 中展示。 ALLOW-FROM uri 表示该页面可以在指定来源的 frame 中展示。 换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。
这样一来,果然可以了呢。。。
by the way ,spring security 居然默认埋了这个坑。。。坑死我了
时间: 2024-10-12 04:26:05