django-iframe-子框架包含-拒绝问题-in a frame because it set ‘X-Frame-Option

avatar
作者
筋斗云
阅读量:0

文章目录

1.X-Frame-Options

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

仅当访问文档的用户使用支持 X-Frame-Options 的浏览器时,此附加的安全性才会被提供。

在使用浏览器调试的console页面中有如下的提示信息:Refused to display ‘页面url’ in a frame because it set ‘X-Frame-Options’ to ‘deny’.
那么就知道是是X-Frame-Options设置出了问题。

X-Frame-Options 有三个值:
DENY:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许
SAMEORIGIN:表示该页面可以在相同域名页面的 frame 中展示
ALLOW-FROM uri :表示该页面可以在指定来源的 frame 中展示
换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。
另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。

2.django url设置

from django.http import HttpResponse from django.views.decorators.clickjacking import xframe_options_exempt from django.views.decorators.clickjacking import xframe_options_deny from django.views.decorators.clickjacking import xframe_options_sameorigin  @xframe_options_exempt def view_one(request): return HttpResponse("This page is safe to load in a frame on any site.")  @xframe_options_deny def view_two(request): return HttpResponse("I won't display in any frame!")  @xframe_options_sameorigin def view_three(request): return HttpResponse("Display in a frame if it's from the same origin as me.") 

3.总结

如果框架拒绝显示,一般是安全设置问题或者跨域问题。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!