動態(tài)網(wǎng)站開發(fā) 機械5118
問題:不知道什么原因導致http請求chrome始終307跳轉到https,這個307的跳轉非常惡心的地方是客戶端緩存行為,并且非普通的f12下面清除緩存可以去掉
解決辦法:使用chrome的清除瀏覽數(shù)據(jù),通過這個方式清除,才能解決。
問題根因:我nginx在配置https的時候使用了
add_header Strict-Transport-Security "max-age=315360000; includeSubdomains";
這樣一句配置,觸發(fā)了客戶端HSTS策略
HTTP嚴格傳輸安全(英語:HTTP Strict Transport Security,縮寫:HSTS)是一套由互聯(lián)網(wǎng)工程任務組發(fā)布的互聯(lián)網(wǎng)安全策略機制。網(wǎng)站可以選擇使用HSTS策略,來讓瀏覽器強制使用HTTPS與網(wǎng)站進行通信,以減少會話劫持風險。
307就是這個策略導致,這個策略的客戶端處理感覺是有bug,按描述他是為了安全,會把一個http請求強制變成https,但如果我本身只是想把原來的81端口http請求轉到443來,結果他給我強制把http://xx:81變成https://xx:81 ,81不可能同時支持http和https,所以觸發(fā)后很麻煩,對已經影響的客戶端服務端這邊無能為力,要非常小心才行
其他:
由于筆者一開始使用的是81端口,所以這個問題影響比較大,如果是使用80端口,則即使觸發(fā)該策略也能正確跳到443,無論80端口是否顯式寫在url。