Cookie与Session

Cookie和Session都被用于会话跟踪,它们都是为了解决HTTP无状态这一个特性,不同点在于Cookie是在客户端保存状态;而Session是在服务器端保存状态

如果cookie不设置过期时间,则默认为会话Cookie,这种Cookie存储在内存中,随浏览器关闭而清除;如果设置了过期时间,则cookie就存储在客户端硬盘中

Session保存在服务器端。通常浏览器第一次访问某页面,发送给服务器的请求中自然就没有携带sessionId,那么当服务器就会生成一个sessionId,并将其放在响应头中,以cookie的形式返回给客户端,客户端拿到这个ID保存起来,下一次访问时就可以将这个ID发送给服务器端,服务器就可以根据这个ID到保存session的地方寻找对应的数据,将数据返回给客户端

Cookie是实现Session的一种方式,这个sessionId就存储在cookie中

如果用户禁用了cookie,服务器端如何跟踪用户呢?利用URL重写,浏览器将sessionId作为get请求的参数发送给服务器端,这样服务器照样可以找到session的数据

区别

  • cookie保存在客户端,session保存在服务器端
  • session存储量比cookie大
  • 用户可以看到cookie,但是看不到session
  • session依赖sessionId,sessionId存储在cookie中,从这个角度看,cookie是session的一种实现形式