Cookie 的作用是什么,和 Session 有什么不一样

Cookie 和 Session 都是用来跟踪浏览器用户身份的会话方式,不过两者的应用场景不太一样。

Cookie 一般是用来保存用户信息的,比如:在 Cookie 中保存已登录的用户信息,下次再访问该网站的时候,可能就不需要重新登录;Session 的作用是通过服务端记录用户的状态,典型的场景是购物车,当添加商品到购物车的时候,系统是不知道哪个用户操作的,因为 HTTP 协议是无状态的,服务端通过给用户创建特定的 Session,之后就可以根据该标识跟踪到这个用户;

Cookie 的作用是什么,和 Session 有什么不一样
HTTP是无状态协议

Cookie 数据保存在客户端(浏览器),Session 数据保存在服务器端,相对来说 Session 安全性更高。如果使用 Cookie 技术,一些敏感信息最好不要写入 Cookie 中,可以将 Cookie 信息加密,然后使用的时候再请求服务器端来解密;

服务器端保存 Session 的方式有很多,最常用的就是内存数据库(如:redis)。既然 Session 存放在服务器端,那如何实现 Session 跟踪呢?大部分情况下,都是通过在 Cookie 中附加一个 Session ID 的方式来跟踪。

Cookie 被禁用了怎么办?最常见的就是利用 URL 重写,把 Session ID 附加在URL路径的后面。