[英]Django SSL cert and static media
我正在構建一個Django應用,該應用在所有面向用戶的頁面上都需要SSL。 在需要SSL的其他項目中,當從同一服務器上的不同虛擬主機提供媒體文件時,我遇到了麻煩。 例如,頁面為: https : //www.mysite.com,但它引用的是http://media.mysite.com/css/screen.css ,瀏覽器隨后向用戶顯示安全警告。
我的理解是,Django的最佳做法是將靜態文件至少保留在其自己的虛擬主機上,據我所知,這需要一個子域,如media.blahblah.com。
顯然,有很多基於SSL的Django應用程序,因此我必須缺少一些東西。 關於如何管理的任何建議?
普遍的答案是,您需要將用於引用靜態文件的URL更改為使用HTTPS的URL。 使用相對路徑(/static/css/screen.css)而不是絕對URL(http:// ...)會使您的媒體根據引用頁面自動從HTTP切換到HTTPS,但是在嘗試時確實會迫使您動手根據下文所述的最佳做法進行投放。
如果您將Django 1.3與contrib.staticfiles一起使用,則似乎只需要更改STATIC_URL設置即可。 如果不是,則必須手動更新路徑(或者,您要指定靜態資產)。
諸如CSS和JavaScript之類的靜態媒體的最佳實踐確實規定,您應該從與服務Django頁面的服務器不同的網絡服務器 (而不僅僅是虛擬主機)為它們提供服務。 當時的想法是,您可以使用占用資源少的Web服務器來非常快速地提供那些簡單文件。 如果您從運行Django站點的同一台Web服務器上為它們提供服務,則很可能會加載許多額外的模塊,但不會用於僅提供靜態文件的請求。
由於需要提供安全的靜態文件,因此有兩種選擇:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.