[英]Django relative urls and https
我有一个使用https作为网址的某些部分(/ account /,/ admin /,/ purchase /)的Django项目。
当以https方式在此页面上的一个页面上时,所有相对内部链接{%url foo%}将指向https:// my_url 。
但是我不想让那些页面显示为https:home,contacts ...
此类要求有哪些解决方案?
强制使用绝对网址?
http://{{ domain }}{% url foo %}
不太好。
想法:您可以使用自定义中间件从https重定向到http(反之亦然)以获取中心URL或URL模式。 这也可以在Apache(或其他Web服务器)配置中完成。
正如Tomasz所建议的,一种方法是设置中间件以在必要时重定向到https和从https重定向。 这是一个实现 -想法是装饰应该在https下提供的视图,并且当用户导航到一个视图中不安全的视图时,中间件将其自动重定向回页面的http版本。
可以使用您的网络服务器重写为http,这样Django甚至不需要知道。
我发现此代码片段可以很好地处理这种情况。 需要SSL的视图将通过从URL的http到https版本的重定向来获取它们,反之亦然。
是的,在https页面上,指向您网站中非https页面的出站链接仍将以https开头,但是用户将被重定向到http版本。
(但是,有一个陷阱:如果您是从http发布到https,反之亦然,它将无法正常工作)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.