cookie 与 sessionId

cookie 与 session

  • http协议是无状态的,每次不会保存用户的状态信息
  • 优点:http由于是无状态的,不必保存客户端的状态,所以可以减少服务器的CPU和内存的消耗
  • http协议十分简单

由于http协议是无状态的,无法得知上一次请求的状态信息,当有的需要登陆时,每次的请求都要进行认证,在请求中添加自己的账号密码信息,但是每次都将账号和密码放入其中无疑增加了繁琐程度,每次的请求服务器都要到数据库中进行验证,降低了服务器效率,而且每次的账号密码都要用户进行输入,降低了用户的体验。所以出现了cookie 和 sesion

  • cookie 和 session都是为解决http无状态的情况而出现的。
cookie
  • cookie: 保存在客户端中的状态信息。可以分为会话cookie 与磁盘cookie.
  • 会话cookie是临时性的,由浏览器维护保存在内存中,当浏览器退出时,会被自动清理掉。
  • 磁盘cookie: 当一个会话cookie被设置了过期时间后就i会被保存在磁盘中,当到达过期时间或是手动的清理,才会被删除。
    磁盘cookie是可以被其他的浏览器共享的。

cookie的具体操作:

  • cookie信息添加在请求和响应中
  • 客户端发出http请求(不包含cookie信息)
  • 服务器发出的响应中包含set-cookie,来通知客户端保存cookie信息。
  • 客户端收到响应,保存好cookie信息后,再在发出的http请求中加入cookie字段信息(包含设置指定的字段信息,不是全部账号密码信息)。
  • 服务器根据收到的请求,将cookie中的信息与之前的记录进行对比进行认证。

cookie的缺陷:

  • cookie信息会被附加在请求中,增加了请求的流量
  • http请求中的cookie是明文传输的,具有一定的安全风险(https除外)
  • cookie的大小限制在4kb左右,对于一些复杂的存储需求不能满足。
session
  • session是在服务器上保留用户的操作历史信息,通过session id 来表示seesion, session id具有随机性和唯一性相当于是一个随机的密钥,避免在传输的过程中暴露账号密码等信息

session 的具体操作

  • 客户端通过请求建立session会话
  • 在响应中返回sessionid
  • 访问网站通过session id 获得对应的内容

session机制:当客户端中的请求中不包含有seeionid时,会在服务器和客户端之间建立session会话,在后续请求中通过sessionid在session中进行检索(使用散列表进行检索)。如果请求中的sessionid检索不到(可能会被删除,会重新建立).

  • 可以通过cookie机制来获取sessionid

区别:
cookie: 保存在客户端 安全性低
session: 保存在服务器 安全性好

具体的服务器有具体的使用方式,跟据服务器的使用情况进行所选择。

cookie 通常用于实现session机制

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值