简单介绍Cookie和Session
问题:由于HTTP协议的无状态性,导致用户体验变差(比如每换一个页面就重新登录),也阻止了用户与服务器交互(比如记录购物车里的商品)。
Cookie
Cookie的本质:
- Cookie本质上是服务器发送给浏览器并保存在浏览器上的一小段数据
获得Cookie的过程:
- 第一次通过浏览器登录服务器成功后,服务器会将登录信息通过响应报头——Set-Cookie返回给浏览器,浏览器则会将其保存下来(Cookie)。
Cookie的作用:
- 浏览器每次发起请求都会携带Cookie到请求报文里。这样,服务器就认识了用户,而不用用户重新登录,这也就提高了用户体验。不仅如此,还可以把用户的浏览痕迹也保存在Cookie中,包括购物信息,这样一来也就解决了用户和服务器无法交互的问题。
Cookie的时效性:
- Cookie有内存级和文件级。内存级的Cookie在浏览器重启后自动清除,而文件级的Cookie永久存在或者存在一段时间(关键要看用户的设置)
只使用Cookie的缺点:
单纯的Cookie有较大缺陷,首先,黑客只要盗走Cookie就可以盗走用户登录信息以及浏览痕迹并且冒名登录用户的账号;其次,Cookie中携带浏览痕迹会让Cookie文件变大,传输效率不高,也不利于维护。
Cookie和Session
Session技术配合Cookie技术是一种良好的实践,具体如下:
- 在用户第一次登录成功后,服务器先为其创建一个Session对象,把登录信息和浏览痕迹保存在Session对象中,并给Session对象分配一个Session id,然后只把Session id写到Cookie中去,浏览器只通过携带Session id发起请求就可以获得用户之前的状态。
优点:
Cookie和Session配合将用户的私密信息保护在服务器里难以盗取,并且由于用户信息在服务器维护,服务器可以对用户的状态做各种检查,以此判断用户是否异常,比如登陆地突然改变,突然qq发起很多陌生会话等,这在一定程度上增加了安全性。
总之,Cookie和Session技术结合,共同维护了一个用户与服务器的会话。
