cookie和session的区别

一、服务端是怎么识别用户的(session)

由于HTTP是无状态协议,所以服务端需要记录用户的状态时,就需要某种机制来识别具体的用户。这个机制就是session。
典型的场景如购物车,当用户下单的时候,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建特定的session,用于标识这个用户,并且跟踪这个用户,才知道用户的购物栏中是什么。这个session是保存在服务器端的,有一个唯一标识。在服务端保存session的方式有很多,内存、数据库、文件都有。

二、客户端是怎么识别用户的(cookie)

每次HTTP请求的时候,客户端都会发送相应的cookie信息到服务端,实际上大多数的应用都是用cookie来实现session跟踪的,第一次创建session的时候,服务端会在HTTP协议会话中告诉客户端,需要在cookie里面记录一个session ID,以后每次请求的时候会把这个会话ID发送给服务器,就知道是谁了。

1.如果浏览器端禁用了cookie

会使用一种URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如sid=xxxx这样的参数,服务端据此来识别客户。

2.Cookie的一些用处

Cookie其实还可以用在一些方便用户的场景下,设想你某次登录过一个网站,下次登录的时候不想再次输入账号了,怎么办?
这个信息可以写到cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名和密码填充了。

三、总结

session是在服务器端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中
cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

原文地址:https://www.cnblogs.com/sminocence/p/8367603.html