阅读量: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.总结
如果框架拒绝显示,一般是安全设置问题或者跨域问题。