Session & Cookie

145 阅读2分钟

Session 和 Cookie 都是服务器保持客户状态的方案。Cookie机制采用的是在客户端保持状态的方案,而Session机制采用的是在服务器保持状态的方案。

(1)Cookie

(Cookie 实际上是一小段的文本信息。)客户端请求服务器,如果服务器需要记录该用户状态,就使用reponse向客户端颁发一个Cookie,而客户端浏览器会把Cookie保存起来。当浏览器请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器,服务器检查该Cookie,一次来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

(2) Session

服务端可以获取Session来记录用户状态。当客户端请求服务器,此时,如果服务器已经为此客户创建过Session,服务器按照session_id把这个session检索出来使用;如果客户端请求不包含session_id,贼服务器创建一个session并且生成相应的session_id,并将这个session_id在本次相应中返回给客户端保存。客户端可以把session_id保存在Cookie中,这样以后再访问服务器的时候,可以把存有session_id的Cookie一并发送给服务器,使它找到此用户的session;(若浏览器禁用Cookie的话,可以通过URL重写机制将session_id传回给服务器。)

cookie与session区别

  • 存储位置与安全性:cookie数据存放在客户端上,安全性较差,session数据放在服务器上,安全性相对更高;
  • 存储空间:cookie有存储空间限制,单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie;session无此限制
  • 占用服务器资源:session一定时间内保存在服务器上,当访问增多,占用服务器性能,考虑到服务器性能方面,应当使用cookie。