Django的相对URL和https(Django relative urls and https)

2019-09-27 17:05发布

我一直在使用HTTPS的网址(/帐号/,/管理/,/采购/)的某些部分Django项目。

当这个页面在HTTPS模式之一,所有相关的内链接{%URL FOO%}将指向https://开头my_url 。

不过,我不希望有显示为HTTPS这些页面:主页,联系人...

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

强制绝对URL?

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

是不是太漂亮。

Answer 1:

正如托马斯指出,一个办法做到这一点是建立中间件重定向到和HTTPS作为必要的。 下面是一个实现 -这个想法是装饰应在HTTPS来服务这些观点,而当用户导航到不应该从一个就是安全视图,中间件将它们导向它会自动回到页面的HTTP版本。



Answer 2:

点子:您可以使用自定义的中间件从HTTPS重定向到HTTP(反之亦然)的centrain网址或网址格式。 这也可以在Apache中(或其他Web服务器)配置来完成。



Answer 3:

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



Answer 4:

我觉得这个片段需要照顾的情况很好。 需要SSL将有他们的看法,通过从HTTP重定向到HTTPS版本的url,反之亦然。

是的,一个HTTPS页面上,出站链接到你的网站的非HTTPS网页将仍然以https开头,但用户将被重定向到的HTTP版本。

(有一种疑难杂症,但是:如果你从HTTP发布到HTTPS,反之亦然它不会工作)



Answer 5:

这也许能为您服务

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

的贡献SSL中间件



文章来源: Django relative urls and https