当前位置: 首页 > 工具软件 > A-Frame > 使用案例 >

X-Frame-Options

祁俊拔
2023-12-01

X-Frame-Options

最近在 django 的项目中做相同域名内嵌网页时,出现了Refused to display 'http://127.0.0.1/' in a frame because it set 'X-Frame-Options' to 'deny'.的错误,这使得我的内嵌网页无法显示在同域名的网页上。

因此这篇文章将会记录一些我查资料所了解它的情况。

介绍

X-Frame-Options HTTP响应头是用来给浏览器指示允许一个页面可否在<frame>,<iframe>,<embed>或者<object>中展现的标记。站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 clickjacking 攻击。

根据 MDN 上面的介绍可以看出,X-Frame-Options是可以用来控制页面是否可以嵌入其他页面,并且还能避免点击劫持(clickjacking)。

语法

X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com/

deny 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。

sameorigin 表示该页面可以在相同域名页面的 frame 中展示。

allow-from uri 表示该页面可以在指定来源的 frame 中展示。

解决问题

显而易见我们只需要将X-Frame-Options设置为sameorigin问题就解决了。

我们查看 setting.py 的配置可以看到在 MIDDLEWARE(中间件)设置里面看到加载点击劫持的中间件。因此我们只需要将X-Frame-Options的默认值改一下即可。

X_FRAME_OPTIONS = 'SAMEORIGIN'

注意事项

  • 设置元标记没有作用

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

X-Frame-Options - HTTP | MDN (mozilla.org)

 类似资料: