什么是cookie和session——二者有何区别

一、概述

由于http具有五大特点:

  • 支持客户/服务器模式
  • 简单快速
  • 灵活
  • 无连接
  • 无状态
    其中无连接、无状态与该主题有关。

无连接,即每次连接只处理一个请求,处理完就断开连接。优点是可以尽快的释放出资源给其他客户端;但是随着互联网发展,网页中嵌套的资源越来越多,每次请求资源都建立一次TCP变得低效。于是keep-alive被提出来,使客户端到服务端的连接持续有效。keep-alive的缺点是在处理暂停期间,本可以释放的资源仍然被占用,影响性能。

无状态,即HTTP协议对事物处理没有记忆能力,服务端不知道客户端处于什么状态。缺点是若后续处理需要前面的信息,需要将前面的信息重传,导致每次传输的数据量增大。

经典的例子,购物这点击下单按钮时,需要知道用户购买了那些物品。

根本上来讲,cookie和session是为了解决HTTP协议无状态的特型应运而生的。

二、cookie

网站为了辨别用户身份而存储在用户本地终端上的数据(通常经过加密)。
cookie分为两种:

  • 内存cookie,由浏览器维护,存储在内存里;
  • 硬盘cookie,保存在硬盘里,有一个过期时间。

三、session

服务端保存的用来跟踪用户状态的数据。

四、区别

1.存取方式不同

cookie中只能保存ASCII字符,不能直接存取对象;
session中能够存取任何数据类型。

2.隐私策略不同

cookie存储在客户端,对用户可见,可以被修改、复制;
session存储在服务端,对用户透明,安全性更高。

3.有效期不同

cookie可以设置长期有效,只要为其设置一个特别大的过期时间;
session有效期较短。

4.服务器压力不同

cookie保存在客户端,不占用服务器资源;
session保存在服务端,当用户并发量大时,会对服务器造成压力。

5.浏览器支持不同

cookie需要客户端浏览器支持。若浏览器禁用或不支持cookie,则需要使用session及URL地址重写(把session id直接附在URL路径后面),可以设置为一切窗口内有效或当前窗口及子窗口有效;
session只在本次浏览器窗口及子窗口内有效。

6.跨域支持上不同

cookie支持跨域名访问;
session不支持跨域名访问,session仅在它所在的域名内有效。

五、参考资料

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

© 2018-2019 惜春令 京ICP备18010644号 网站地图