HTTPS能登陆,HTTP不行


同一个服务器既支持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没有。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM