2010-11-10 73 views
1

我有一個Django項目,使用https對URL的某些部分(/ account /,/ admin /,/ purchase /)。Django相關網址和https

當以https模式在此頁面之一上時,所有相關的內部鏈接{%url foo%}將指向https://my_url

但是我不希望有顯示爲HTTPS這些頁面:主頁,聯繫人......

什麼是這種需求解決方案?

強制絕對url?

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

不太好。

回答

4

正如Tomasz所建議的,一種方法是設置中間件以根據需要重定向到https或從https重定向。這裏的one implementation--這個想法是修飾那些應該在https下提供的視圖,當用戶導航到不應該安全的視圖時,中間件會自動將它們重定向回頁面的http版本。

+0

鏈接不工作 – andi 2014-05-13 11:06:46

4

想法:您可以使用自定義中間件從https重定向到http(或反之),以實現中心URL或URL模式。這也可以在Apache(或其他Web服務器)配置中完成。

2

可以使用您的web服務器重寫爲http,這種方式Django甚至不需要知道。

2

我覺得this snippet很好地照顧情況。需要SSL的視圖將通過從http到https版本的url進行重定向,反之亦然。

是的,在https頁面上,到站點中非https頁面的出站鏈接仍將以https開頭,但用戶將被重定向到http版本。

(有一種疑難雜症,但是:如果你從HTTP發佈到HTTPS,反之亦然它不會工作)