cookie 和session 的区别
1 cookie
cookie是存储在浏览器中的键值对文本信息。
由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。
- cookie流程:
- 客户端首次请求服务器,浏览器不会携带cookie.
- 服务器接收到请求后,如果请求中没有cookie,就会使用response向客户端浏览器颁发一个Cookie,客户端浏览器会把Cookie保存起来。
- 当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
2 session
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中。
如果浏览器禁用了cookie,则服务器无法使用session。
- session流程:
- 浏览器首次登录服务器时,服务器会接收到浏览器请求并验证用户登录信息,校验成功则会在服务器中设置一个session,并响应一个session信息给浏览器。
- 浏览器接收到响应,会将cookie信息保存起来。
- 浏览器再次请求服务器时都会携带sessionid,服务器会根据sessionid自动验证session信息,验证成功,则能获取到session信息。
- 依赖于Cookie
- 所有请求者的Session都会存储在服务器中,服务器如何区分请求者和Session数据的对应关系呢?
答:在使用Session后,会在Cookie中存储一个sessionid的数据,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到sessionid后,会根据这个值找出这个请求者的Session - 如果想使用Session,浏览器必须支持Cookie,否则就无法使用Session了。
- 存储Session时,键与Cookie中的sessionid相同,值是开发人员设置的键值对信息,进行了base64编码,过期时间由开发人员设置
3 cookie 和session 的区别:
- cookie数据存放在客户的浏览器上,session数据放在服务器上。
- cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
- session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。
- 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

浙公网安备 33010602011771号