Django Clickjacking Protection resp.get(' X-Frame-Options')NoneType

时间:2016-11-09 17:56:49

标签: python django clickjacking

问题:如果已使用我们的单点登录提供程序进行身份验证,则用户不得查看登录页面。

解决方案:iframe和javascript显示加载gif,直到iframe从单一登录提供程序返回响应为止。如果SSO提供程序响应是用户当前已登录,则Django会对用户服务器端进行身份验证,并且javascript会将用户重定向到Web应用程序。如果SSO提供程序响应是用户未登录,则javascript将使用登录表单替换加载gif。

使用Django == 1.9.9,Python 2:

我们的get来电已使用@xframe_options_sameorigin进行修饰,但最近有时会开始返回此错误:

2016-09-25 16:38:27,598 | django.request            | ERROR    | Internal Server Error: /accounts/open-id-finish/
Traceback (most recent call last):
File "/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response
  response = self.process_exception_by_middleware(e, request)
File "/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response
  response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/virtualenv/local/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in view
  return self.dispatch(request, *args, **kwargs)
File "/opt/virtualenv/local/lib/python2.7/site-packages/django/views/generic/base.py", line 88, in dispatch
  return handler(request, *args, **kwargs)
File "/opt/virtualenv/local/lib/python2.7/site-packages/django/views/decorators/clickjacking.py", line 40, in wrapped_view
  if resp.get('X-Frame-Options') is None:
AttributeError: 'NoneType' object has no attribute 'get'

这个错误来自哪里? Django 1.9中的@xframe_options_sameorigin是否有变化?我们的get函数有时可能是一个NoneType吗?

1 个答案:

答案 0 :(得分:0)

我认为这是中间件的类定义问题。

以前这可以工作:class myMiddleware(object):

我不确定发生了什么变化,但是我认为您需要:class myMiddleware(MiddlewareMixin):。在MiddlewareMixen

中找到了from django.utils.deprecation import MiddlewareMixin