【问题标题】:Django relative urls and httpsDjango 相对 url 和 https
【发布时间】:2010-11-10 19:00:52
【问题描述】:

我有一个 Django 项目使用 https 作为 url 的某些部分(/account/、/admin/、/purchase/)。

当以 https 模式在此页面之一上时,所有相对内部链接 {% url foo %} 将指向 https://my_url

但是我不想让这些页面显示为 https :home, contacts ...

这种需求有什么解决方案?

强制执行绝对网址?

 http://{{ domain }}{% url foo %} 

不太好。

【问题讨论】:

    标签: python django ssl https


    【解决方案1】:

    正如 Tomasz 所建议的,一种方法是设置中间件以根据需要重定向到 https 和从 https 重定向。这是one implementation - 这个想法是装饰那些应该在https下提供的视图,当用户导航到一个不应该安全的视图时,中间件会自动将它们重定向回http版本的页面。

    【讨论】:

      【解决方案2】:

      想法:您可以使用自定义中间件将中心 URL 或 URL 模式从 https 重定向到 http(反之亦然)。这也可以在 Apache(或其他 Web 服务器)配置中完成。

      【讨论】:

        【解决方案3】:

        可以使用你的网络服务器重写为 http,这样 Django 甚至不需要知道。

        【讨论】:

          【解决方案4】:

          我发现this snippet 很好地处理了这种情况。需要 SSL 的视图将拥有它们,通过从 http 到 https 版本的 url 的重定向,反之亦然。

          是的,在 https 页面上,指向您网站中非 https 页面的出站链接仍以 https 开头,但用户将被重定向到 http 版本。

          (但是有一个问题:如果您从 http 发布到 https,反之亦然,这将不起作用)

          【讨论】:

            【解决方案5】:

            也许这可以为你服务

            http://code.djangoproject.com/wiki/ContributedMiddleware#SSLMiddlewarebyStephenZabel

            一个贡献的 SSL 中间件

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-10-16
              • 1970-01-01
              • 1970-01-01
              • 2012-10-07
              • 2010-12-17
              • 2011-06-02
              • 2013-03-19
              相关资源
              最近更新 更多