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没有。

 

posted @ 2021-05-28 14:32  bert_qin  阅读(2141)  评论(0编辑  收藏  举报