session 和 cookie 有什么区别

session和cookie是用于记录客户端信息的技术,都是用来跟踪浏览器用户身份的会话方式。

一、什么是 cookie ?

cookie 数据存储在客户端)自带证明自己身份信息的标记 (跨页面间变量传递 :自己携带的一些信息从后台绕一下 请求转发 缓存 到别的页面)

由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?

就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证,这样服务器就能从通行证上确认客户身份了。

cookie的工作原理

  1. 浏览器第一次发送请求到服务器端

  2. 服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端

  3. 浏览器端再次访问服务器端时会携带服务器端创建的Cookie

  4. 服务器端通过Cookie中携带的数据区分不同的用户

二、什么是 session ?

session(数据存储在服务端)把服务器端的文件信息存储在硬盘上或是内存中。

如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

session的工作原理

  1. 浏览器端第一次发送请求到服务器端,服务器端创建一个Session。同时会创建一个特殊的Cookie,然后将该Cookie发送至浏览器端。
    💦特殊的cookie:name为 JSESSIONID 的固定值,value 为 session对象的ID

  2. 浏览器端发送第N(N>1)次请求到服务器端,访问服务器端时携带 name 为 JSESSIONID 的 Cookie对象

  3. 服务器端根据 name 为 JSESSIONID 的 Cookie 对象的 value (即sessionId),去查询 Session对象,从而区分不同用户。

通过原理可以知道:

Session的使用要求用户浏览器必须支持Cookie, 如果浏览器不支持使用Cookie,或者设置为禁用Cookie,那么将不能使用Session。

三、session 和 cookie 区别

1. 数据保存的位置不同
在上面介绍的时候也提到过,cookie是保存在客户端(浏览器或者本地),session保存在服务端。

2. 对服务器造成的压力不同
由于两者数据存储位置的不同,cookie使用起来更加灵活方便。当访问增多时,每个用户都会产生一个Session,占用大量内存,比较耗费服务器的性能。

3. 存储大小不同
单个cookie保存的数据一般小于4kb,并且一般一个站点最多保存20个cookie;而对于session来说没有限制,但是由于session保存在服务器端,session不宜过大,会影响服务器端的性能。

4. 存储内容不同
cookie只能存储String类型字符串对象,而session存储结构类似于hashtable的结构,可以存放任何类型。

5. 安全程度不同
由于cookie保存在客户端,有可能会被人篡改或窃取,它存在一定的安全隐患(一般情况下,浏览器会对cookie进行一些限制,提高cookie的安全性),session是保存在服务器端的所以安全性更高一些,所以我们可以把一些重要信息用session来存储。

6. 有效期不同
cookie可以设置保存时间,会在有效期内一直保存;而session是会话级别的,会话结束,session也相应被清除

7. 跨域支持上的不同
Cookie支持跨域名访问,而Session则不会支持跨域名访问,Session仅在他所在的域名内有效。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值