2016-01-15 112 views
2

我的網站默認情況下是HTTP。我確實有一個啓用HTTPS的證書,但只有某些區域強制實施安全連接。從HTTP登錄到HTTPS

登錄通過Ajax進行處理,我想要開始使用SSL,即使請求來自HTTP。

我試圖強制請求的地址有HTTPS,並且它完美地回覆。但是,在ajax回調中,儘管回覆沒有問題,但似乎從未設置過會話。

如果請求來自HTTPS,一切都會順利進行。

爲什麼會發生這種情況?

我可以理解爲什麼HTTPS到HTTP請求被瀏覽器拒絕,但相反的情況(HTTP到HTTPS)有一個奇怪的結果,至少可以說,因爲瀏覽器不會引發任何類型的錯誤。在完成Ajax請求後,會話似乎從未開始,儘管來自回覆的所有數據都告訴我它已完成。

回答

3

您的登錄系統很可能基於會話信息和/或cookie。

出於安全原因,無法在HTTP上讀取通過HTTPS設置的Cookie和flagged as secure(請參閱部分4.2.2 Set-Cookie Syntax)。

因此,您的系統中可能發生的情況是您的用戶通過HTTPS進行身份驗證,並且只要他們繼續使用HTTPS,他們就會登錄。在HTTP上,會話將不存在。

您不應該將該特定cookie標記爲安全或將整個站點切換爲HTTPS(推薦選項)。截至2016年,如果您的網站已經擁有HTTPS收聽功能,那麼在HTTPS下只有某個網站的某些網頁沒有任何意義。