HSTS(HTTP Strict Transport Security) 簡單來說就是由瀏覽器進行http向https的重定向。如果不使用HSTS,當用戶在瀏覽器中輸入網址時沒有加https,瀏覽器會默認使用http訪問,所以對于https站點,通常會在服務端進行http至https的重定向。如果用了HSTS,就可以減少服務端的這次重定向。
當我們部署https時,發現HSTS的這個用處后,立馬就使用了它,使用方法很簡單——在響應頭中加上 strict-transport-security:max-age=31536000 。
但后來通過星巴克的WiFi訪問我們的https站點時發現了一個問題。在瀏覽器中輸入網址后,沒有出現星巴克WiFi的登錄頁面,而是瀏覽器認為這是不安全連接,不允許訪問,只能先訪問一個http站點,出現星巴克WiFi登錄頁面并完成登錄后才能訪問我們的https站點。
背后的原因很簡單,由于我們的站點啟用了HSTS,瀏覽器默認會以https方式發出請求,星巴克的WiFi攔截了請求,以http的方式返回了WiFi登錄頁面,瀏覽器收到后一看這不安全,立馬停止連接。如果不啟用HSTS,在服務端進行重定向,就不會有這個問題。
只要基于http進行驗證的WiFi都會有這個問題,所以在部署https時是否啟用HSTS需要考慮這個因素。如果你原先啟用HSTS,現在想取消,不能直接去掉strict-transport-security響應頭,而是要改為 strict-transport-security:max-age=0 ,不然之前使用了HSTS的瀏覽器在過期之前會一直使用HSTS。
文章列表