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)。
语法
1 | X-Frame-Options: deny |
deny
表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
sameorigin
表示该页面可以在相同域名页面的 frame 中展示。
allow-from uri
表示该页面可以在指定来源的 frame 中展示。
解决问题
显而易见我们只需要将X-Frame-Options
设置为sameorigin
问题就解决了。
我们查看 setting.py 的配置可以看到在 MIDDLEWARE(中间件)设置里面看到加载点击劫持的中间件。因此我们只需要将X-Frame-Options
的默认值改一下即可。
1 | X_FRAME_OPTIONS = 'SAMEORIGIN' |
注意事项
设置元标记没有作用
1
<meta http-equiv="X-Frame-Options" content="deny">
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 hjhcos!
评论