繁体   English   中英

Django相对网址和https

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM