深入了解Cookie和Session

什么是会话?

  • 用户打开浏览器在浏览器中打开超链接进入web资源最后关闭的整个流程称为会话
  • 有状态会话:能够记录用户的访问状态,知道之前有谁访问过,当前是谁在访问
  • 无状态会话:不记录访问信息,不知道每次访问的用户是否相同

1

HTTP超文本传输协议

http是无状态的,不会保存每次提交的信息,因此我们需要保存会话的技术,如果将状态保存在服务端,则称为服务端技术 S e s s i o n Session Session;如果状态保存在客户端,则称为客户端技术 C o o k i e Cookie Cookie

Cookie

cookie是由服务器创建,通过响应发送给客户端,并保存在浏览器上的一小块信息,它会在浏览器下次再次发起请求的时候被携带并发送到服务器上。

cookie是不可跨域的,每一个域名下都有自己的cookie,而且这些cookie是互通的,但是不同的域名之间的cookie是不能够通信的。
比如 www.baidu.com 的cookie不能够访问 www.csdn.net 的cookie。
这样做的目的是为了安全进行考虑。

Cookie的产生

  1. 客户端在首次访问时,需要编写访问请求url。
  2. 由服务端创建cookie对象并通过response将cookie传递给客户端。
  3. 客户端响应服务端的cookie信息,并存储。
  4. 再次访问时携带信息进行访问。
  5. 服务端可以从请求中获取到cookie信息。

2

Cookie的缺陷

  • cookie的大小受到限制,一般会被浏览器限制为4kb或者8kb的大小。
  • 同一个域名下的cookie的数量受到限制,一般被限制为20个。
  • cookie在前端可以直接被修改。
  • 某些浏览器可能会禁用cookie,这就会导致会话状态无法保存。

Session

session也用于记录用户状态。

Session的产生

  1. 客户端在首次访问时,需要编写访问请求url。
  2. 由服务端创建session对象,每个session对应一个jssesionid,将jssesionid传递给客户端。
  3. 客户端响应服务端的jssesionid信息,并存储到cookie。
  4. 再次访问时携带jssesionid进行访问。
  5. 服务端可以从请求中获取到jssesionid信息。

3

如果如果浏览器禁用Cookie

需要注意的是:如果浏览器禁用cookie,session的值也就无法在客户端保存,读取时就不能通过客户端进行读取。请求转发重定向的行为可能会受到一些影响。

  1. 请求转发(Forwarding):是一种服务器行为,当客户端请求到达后,服务器进行转发。
    • 转发的过程中地址栏的地址不发生改变,请求从客户端发送到服务器,然后由服务器转发到另一个服务器或资源。
    • 当Cookie被禁用时,服务器可能无法识别和跟踪用户的会话。因此,当请求转发到另一个服务器或资源时,新的服务器可能无法识别用户的身份或状态。
    • 这可能导致用户在请求转发后被视为新用户,并需要重新登录或重新输入个人信息。
  2. 重定向(Redirection):一种服务器指导的客户端行为。客户端发起一个请求给服务器接收处理之后,服务器给客户端一个响应(一个新的地址),当客户端接受到新的地址之后,马上发起第二次请求,服务器接收并响应。
    • 重定向是指将用户的请求从服务器A重定向到服务器B,然后返回一个新位置的响应。
    • 当Cookie被禁用时,与请求转发类似,服务器可能无法识别和跟踪用户的会话。因此,当用户被重定向到另一个服务器时,新的服务器可能无法识别用户的身份或状态。
    • 这可能导致用户在重定向后被视为新用户,并需要重新登录或重新输入个人信息。

需要注意的是,即使cookie被禁用,某些情况下仍然可以使用其他技术来跟踪用户状态,例如通过URL参数、隐藏表单字段或服务器端会话来传递必要的信息。然而,这些方法可能不如使用cookie方便和高效。

因此,当设计Web应用程序时,开发人员应该考虑到用户可能禁用cookie的情况,并采取适当的措施来确保应用程序的正常运行和用户体验。

Cookie和Session的区别

  1. 保存位置不同
    cookie数据存放在客户的浏览器(客户端)上,session数据放在服务器上,但是服务端的session的实现对客户端的cookie有依赖关系的。

  2. 存储大小不同
    单个cookie保存的数据不能超过4K。每个站点cookie个数有限制,比如IE8为50个、Firefox为50个、Opera为30个;session没有容量限制。

  3. 传输量不同
    在每次的访问中,cookie会传输所有的cookie内容,session只需要传输一个Session ID就可以了。

  4. 安全性不同
    cookie存放在用户本地,可以被轻松访问和修改并进行cookie欺骗,安全性不高;session存储于服务器,比较安全。

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值