同一個服務器既支持HTTPS,又支持HTTP。
登陸認證非常典型,即服務端通過Set-Cookie頭設置-http-session-到瀏覽器的cookie,瀏覽器請求時自動攜帶這個cookie完成認證。
現在發現一個現象:HTTPS先登陸,再通過HTTP無法登陸,反之則都能登陸。
研究發現,這是由於cookie的安全標志secure引起的。
1.HTTP和HTTPS是同一個domain,cookie是共享的。
2.如果沒有secure標志,HTTPS登陸后,HTTP頁面請求時可以自動攜帶和HTTPS相同的cookie。
3.由於有secure標志,HTTP無法讀取HTTPS的cookie。
4.HTTP也無法設置自己的cookie,因為和HTTPS是同一個domian。
5.由於上述兩點,HTTP便無法登陸。
6.各家瀏覽器實現也不一樣,目前發現谷歌內核的瀏覽器有此問題,IE沒有。