【问题标题】:Why is my SSL middleware misbehaving?为什么我的 SSL 中间件行为不端?
【发布时间】:2012-11-26 12:37:00
【问题描述】:

我正在使用中间件来强制通过 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 的url,我会按预期在我的日志中收到SSL Disabled 消息。但是,如果我加载一个设置了SSL 的url,但SSL_ENABLEDsettings.py 中是False,则页面仍会尝试通过HTTPS 加载(并且失败,因为我在./mange.py runserver 上执行此操作) ,并且我没有收到任何日志消息。为什么这种方法不起作用?

【问题讨论】:

    标签: django django-middleware


    【解决方案1】:

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

    如果我确实想重定向,我会返回:

    return HttpResponsePermanentRedirect(newurl)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 2018-03-15
      相关资源
      最近更新 更多