cookie是由服务端颁发的一段信息,以文本存在浏览器中,浏览器每访问一个网站一般都会新建一个文本来存储该网站的cookie,这个是这个网站服务端给你的通行证,可以辨别是哪一台电脑(IP),而session是存在服务端的信息,也适用于这个系统访问的所有客户端唯一辨别信息,可能存在不辩别客户端电脑(IP)的信息,不会重复,其中最重要的就是cookie的不可跨域名性,我的理解是浏览器每一次发出请求一定要带上这个域名的cookie发出去


补充:

什么是token??

Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位;存在cookie里面,每一次请求会跟随着cookie传到服务器上认证是哪一个系统内的用户。

前端sessionid_客户端

服务器为客户端写入cookie:

前端sessionid_客户端_02


注意一点:在登陆的时候,除了使用cookie保存以外,还可以使用session,但是,为什么我们还少使用session做登陆注册呢,因为session的值是保存在服务器中的,在一些大型的应用中,服务器可能不止一台,所以,无法知道,用户注册的session保存在哪台服务器上。

Session

session是一张记录系统所有用户信息的档案表,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一 个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session 依据该Cookie来识别是否为同一用户[发送一般是在第一次访问的时候放松]
URL地址重写是对客户端不支持Cookie的解决方案。URL地址重写的原理是将该用户Session的id信息重写 到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。 HttpServletResponse类提供了encodeURL(Stringurl)实现URL地址重写。。

session和cookie的应用场景

session:

1.除非是纯静态的页面,否则都会用到session来记录用户的行为。静态资源的访问不会创建sessionId的
2.通过session向客户端推送消息
3.禁止一个用户多点登录

cookie

1.判断用户是否登陆过网站,以便下次登录时能够直接登录。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。而修改账户密码等操作也需要对其登陆状态进行判断。

2.另一个重要的应用是“购物车”中类的处理和设计。用户可能在一段时间内在同一家网站的不同页面选择不同的商品,可以将这些信息都写入cookie,在最后付款时从cookie中提取这些信息,当然这里面有了安全和性能问题需要我们考虑了。