首页 > 其他 > 详细

Session & Cookie

时间:2020-05-26 22:20:34      阅读:63      评论:0      收藏:0      [点我收藏+]

Cookie 是存放在客户端本地磁盘的一段文本信息 。客户端请求服务器,如果服务器需要记录该用户状态,就使用 Response 向客户端浏览器颁发一个 Cookie。客户端会把 Cookie 保存起来,当浏览器再请求该网站时,浏览器把请求的网址连同该 Cookie 一同提交给服务器。服务器检查该 Cookie,以此来辨认用户状态。服务器还可以根据需要修改 Cookie 的内容 。

Session

Session 是存放在服务器上的用户会话信息 ,可以存放在磁盘或者内存中 。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器,Session 默认存放在服务器的一个文件(而非内存)里,不过也可以存放在内存里,Session 的运行依赖 Session ID,而 Session ID 一般是存在于 Cookie 中的,提交给服务器 Cookie 时,Session ID 也会随之传送给服务器,也就是说,如果浏览器禁用(或者清除)了 Cookie,同时 Session 也会失效(但可以通过其他方式实现)其他方式实现传递 Session ID:①.URL重写:将 Session ID 放在 URL 中传递给服务器; ②.表单隐藏字段:提交表单时,设置一个隐藏的 Session ID 字段 。

  • Cookie 数据存放在客户的浏览器上,Session 数据放在服务器上
  • Session 的实现依赖于 Cookie,Session 机制的实现依赖于 Session ID,而 Session ID 大部分情况需要由 Cookie 传递;但是,Session 机制也可以不依赖 Cookie 传递,借助 URL 重写,或者设置 表单隐藏字段
  • 存储容量不同,Cookie 存储容量有上限,每个 <4k,一个站点最多保存20个 Cookie;而 Session 存储容量没有上限,取决于服务器的存储容量配置(磁盘或内存)
  • 存储方式不同,Cookie 中只能保管 ASCII 字符串,需要通过编码方式存储为 Unicode 字符或者 二进制数据;Session中能够存储任何类型的数据,包括且不限于字符串(string),整型(integer),列表(list)等等
  • 隐私策略不同,Cookie 对客户端是可见的,别有用心的人可以分析存放在本地的 Cookie 并进行 Cookie 欺骗,所以它是不安全的;Session 存储在服务器上,对客户端是透明的,不存在敏感信息泄漏的风险
  • 有效期不同,开发可以通过设置 Cookie 的属性(可称为Persistent Cookie),达到使 Cookie 长期有效的效果 ;Session 依赖于名为 JSESSIONID 的 Cookie (可称为 Session Cookie),而 Cookie JSESSIONID 的过期时间默认为-1,当前浏览器的窗口关闭后,Session 也会消失,通常情况下,Session Cookie 是不支持浏览器跨窗口访问的,因而 Session 不能达到长期有效的效果
  • 服务器压力不同,Cookie 保管在客户端,不占用服务器资源; Session 是保管在服务器端的,每个用户都会产生一个 Session 。假如并发访问的用户十分多,会产生十分多的 Session ,耗费大量的内存
  • 跨域支持上不同,Cookie 支持跨域名访问,Session 不支持跨域名访问

Cookie:第一天登录博客园,输入用户名密码,点击记住密码(十天之内免密登录),第二天到第十天,再次打开博客园网址,直接显示是已经登录的状态,这个时候用到的一个机制就是 Cookie

Session:某个时间段,我登录了博客园,在各路大神的博客中穿梭浏览,请求的 URL 地址不断变换,每篇博文都少不了我几个评论,但整个过程中,我依旧没有退出登录,服务器端维持了我的会话,跟踪我的用户状态,这个时候用到的一个机制就是 Session

Session & Cookie

原文:https://www.cnblogs.com/zzzwqh/p/12968495.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!