Cookie和Session的区别

cookie

cookie机制原理

Cookies是服务器在客户机上存储的数据,客户端每次请求都会携带cookie,服务端通过cookie可以识别用户状态。

cookie属性
  • name/value:以key/value的形式存在
  • comment:说明该cookie的用处
  • domain:可以访问该cookie的域名
  • Expires/maxAge:cookie失效时间。负数:临时cookie,关闭浏览器就失效;0:表示删除cookie,默认为-1
  • path:可以访问此cookie的页面路径
  • size:cookie的大小
  • secure:是否以https协议传输
  • version:该cookie使用的版本号
  • HttpOnly:此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie,能防止XSS攻击。

session

  • session是保存在服务端的一个类HashTable结构数据,用来识别用户的状态,这个数据可以保存在集群、数据库、文件中。
  • 当客户端发出一个请求,服务器会先检查这个请求里是否包含session标识(sessionId)。如果已包含,则说明以前已经为此客户端创建过session,服务器就按照sessionId找到对应的session。如果客户端请求不包含sessionId,则为此客户端创建一个session和对应的sessionId,并将sessionId存在cookie返回。
  • sessionid是服务器和客户端链接时候随机分配的,重复概率很小。

区别

  • cookie和session都是用来识别用户身份状态会话方式
  • cookie 数据存放在客户的浏览器上,session数据放在服务器上;
  • cookie 不是很安全,别人可以分析存放在本地的 cookie 并进行 cookie 欺骗,考虑到安全应当使用 session;
  • session 会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能,考虑到减轻服务器性能方面,应当使用cookie;
  • 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个 cookie。
  • 域的支持范围不一样,比方说a.com的Cookie在a.com下都能用,而www.a.com的Session在api.a.com下都不能用,解决这个问题的办法是JSONP或者跨域资源共享
    image.png

使用场景

  • 将登陆信息等重要信息存放为 session;
  • 其他信息如果需要保留,可以放在 cookie 中。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。