为什么我的SSL中间件行为不端?

时间:2012-11-26 12:37:01

标签: django django-middleware

我正在使用中间件来强制通过HTTPS提供某些页面:

class SSLRedirect:

  def __init__(self):
    self.enabled = getattr(settings, 'SSL_ENABLED')

  def process_view(self, request, view_func, view_args, view_kwargs):

    if SSL in view_kwargs:
      secure = view_kwargs[SSL]
      del view_kwargs[SSL]
    else:
      secure = False

    if not self.enabled:
      logger.debug('SSL Disabled')
      return
...

问题是settings.py中的切换似乎没有效果。如果我加载了一个我没有设置SSL的网址,我会按预期在我的日志中收到SSL Disabled消息。但是,如果我加载了SSL设置了SSL_ENABLED的网址,但False中的settings.py./mange.py runserver,则网页仍然会尝试通过HTTPS加载(并失败,因为我'我在{{1}})上这样做,我没有得到任何日志消息。为什么这种方法不起作用?

1 个答案:

答案 0 :(得分:-1)

事实证明这不是代码的错误。

如果我确实想要重定向,我就回来了:

return HttpResponsePermanentRedirect(newurl)

我的浏览器缓存了这个,所以即使关闭开关也会发生重定向。清除我的浏览器缓存修复此问题。