chrome87版本iframe页⾯空⽩_iframe跨域嵌套问题
背景:我们有个奇葩⽹站,⽤iframe嵌⼊了很多友⽅部门的页⾯,很多部门设置了X-Frame-Options:deny 导致页⾯展⽰不出来,如何让页⾯展⽰出来,并且只允许在我们的域名下展⽰出来呢。
先解释下这个的含义,deny就是不允许被iframe嵌套。sameorigin表⽰可以在相同域名下嵌套。allow-from uri标识可以被指定域名嵌套。
虽然我们的页⾯可以访问了,但这并不是设置了域名⽩名单,⽽是让这个header⽆效,如果尝试把页⾯嵌⼊到其他域名,同样可以访问。到这⾥我们部门的问题解决了,其他部门的页⾯可能会存在被iframe嵌套导致的安全问题,不过在国企,其他部门的问题⼜和我有什么关系呢?但是本着对技术的热爱,还是研究下这个错误。
查了相关报错,有⼈说是不⽀持多个域名,于是我⽤charles重写了header,依然报错。翻看官⽅⽂档,发现这个header有兼容性问题
按照这个的说明,FF的最新版也许能⽀持,换到FF84进⾏试验,依然报错。继续查阅资料,直到我看到英⽂版本的mdn
再看中⽂版
这个值已经被废弃了,但是中⽂⽂档没有提⽰。
那要实现允许指定域名以iframe的⽅式加载就没有⽅法了吗?当然不是。⼀个新的header,Content-Security-Policy 完全可以实现这个功能。他有⾮常强⼤的功能,其中frame-ancestors可以控制允许iframe嵌套的⽗级域名。
使⽤⽅法如下
Content-Security-Policy: frame-ancestors m.wo
iframe嵌套页面加载慢
⽤charles实验⼀下,设置如上header的时候,页⾯顺利加载。设置其他域名为⽩名单,⼀张苦脸,符合预期。
⾄此,这个问题顺利解决。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论