django解决frame拒绝问题

浏览器报错:
Refused to display 'http://192.168.1.113:8081/index/student/?problemid=1554177889' in a frame because it set 'X-Frame-Options' to 'sameorigin'.

发生在,给出一个页面链接(来自django),为了访问友好,需要将页面通过iframe显示在app页面中。于是报出如下错误。

发现在这个页面中request header中多出响应头X-Frame-Options 值为sameorigin。
百度大概意思是,这属于一种跨域行为,这个响应头就是拒绝了这种行为。

解决办法:
1、全部页面修改
在setting.py中设置

X_FRAME_OPTIONS = 'ALLOWALL url'		#这个是将值改变为可以响应  url指定地址

2、某一个views设置


from django.views.decorators.clickjacking import xframe_options_exempt      # iframe拒绝问题

@xframe_options_exempt          # 去掉这个view的响应头中的 X_FRAME_OPTIONS    解决frame 拒绝问题
class xxxx(View):
    def get(self,request):
        return render(request,'xxx/index_xxxx.html',{'data':xxx})

这个是去掉响应头中的该值

去看了这个装饰器的文件一共有三个方法


@xframe_options_deny				#设置为deny

@xframe_options_sameorigin			#设置为sameorigin

@xframe_options_exempt				#去掉iframe限制,允许iframe访问某一个voews

具体每一个什么作用就要区看X_FRAME_OPTIONS的东西了,但是为什么没有ALLOWALL呢?

百度了一下这三个值的意思
deny : 不允许在frame中展示
sameorigin : 允许在通域名的frame中展示
ALLOWALL : 在指定地址的frame中可以展示 所以后边应该还有个url

  • 13
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值