我们在网页上登陆之后,可以很久都不用再次登录,比如哔哩哔哩、CSDN
但是http是无状态的,关闭网页后,再来服务器压根不认识你
所以为了客户端更好地体验,有了Cookie和Session
Cookie
cookie是以键值对(key-value)表示
cookie有2种存储方式,一种是会话性,一种是持久性。
会话性:如果cookie为会话性,那么cookie仅会保存在客户端的内存中,当我们关闭客服端时cookie也就失效了。
持久性:如果cookie为持久性,那么cookie会保存在用户的硬盘中,直至生存期结束或者用户主动将其销毁。
Cookie就是一些数据,用于存储服务器返回给客服端的信息,客户端进行保存。在下一次访问该网站时,客户端会将保存的cookie一同发给服务器,服务器再利用cookie进行一些操作。利用cookie我们就可以实现自动登录,保存游览历史,身份验证等功能。
过程:
浏览器向服务器端发起HTTP请求
服务器进行Set-Cookie(Cookie有名和值两个属性,服务器将两个属性里的内容填充完整)
服务器将Cookie发送给浏览器之后,浏览器保存
往后浏览器每次的请求中都自动附上Cookie(即Cookie是存储在浏览器的数据)
但Cookie很不安全(打开浏览器就能看到)
Session会话
浏览器访问服务器是会话的开始,会话结束时间比较模糊,所以服务器设置时间(会话结束的时间)和唯一的ID(Session ID)
服务器端收到用户名及密码之后进行验证发现是正确的
会创建一个Session ID和会话结束时间,开辟一块内存用来保存服务器端所有的session
设置Cookie,将Session ID加入到Cookie里,再将会话结束时间设置为Cookie的有效期
每个session都会有一个唯一标识session ID,根据客户端传过来的cookie中的session ID,找到对应的服务器端的session。
为了防止服务器端的session过多导致内存溢出,web服务器默认会给每个session设置一个有效期, (30分钟)若有效期内客户端没有访问过该session,服务器就认为该客户端已离线并删除该session。