Cookie与Session的区别与联系

Cookie

Cookie出现的原因

1.http是无状态的连接,在某些时候需要对客户端进行标识。
2.仅使用ip地址无法正确标识客户端(NAT网络地址转换等原因)。
3.解决了需要重复登录的问题

Cookie定义

客户端会话技术,第一次访问服务器时服务器会给予该客户端一个标识,下次访问时会携带该标识。

Cookie示例(添加Cookie)

  Cookie cookie = new Cookie("username","zhangsan");
  response.addCookie(cookie);  

Session

Session出现的原因

在客户端拥有了Cookie后,在服务器端也需要一个机制来确保服务器内部标识一个用户,并有效的记录相关信息。

Session定义

服务器端会话技术,服务器给与客户端一个标识,记录客户端的某些动作及信息。

Session示例

HttpSession session = request.getSession();


联系与区别

  Cookie与Session往往是同时使用的,在客户端使用Cookie保存用户的账号信息等,在服务器端使用Session来记录用户的行为。
  Cookie保存在本地浏览器中,存储大小一般不超过4kB,Session保存在服务器中,存储大小与服务器配置与算法有关。存储在本地的Cookie有可能被坏人获取,从而跳过登录直接使用Cookie登录账户,而Session保存在服务器中,安全性要由于Cookie。
  Cookie与Session均拥有存活时间,通过 setMaxAge()设置存活时间:
   1.正数代表存活时长/单位为秒
   2.负数表示退出浏览器即销毁
   3.0表示立即销毁(在API中并没有专门的销毁接口)
  同一个浏览器在Cookie(Session)存活时间内,多次访问服务器获得的Cookie和Session是相同的,许多记录密码的Cookie存活时间可长达数月,而Session的存活时间由服务提供商决定。
  Cookie和Session的出现都是为了在http这种无状态的连接下,进行相对“有状态”的连接,不使用账号密码这种硬性登录方案,而是在服务器与浏览器之间形成一种协议,通过合理的设置分配标识码来识别不同用户,在一定程度上改善了用户体验,给服务提供商确定用户需求提供了便利,但同时也带来了如Cookie欺骗等账号风险。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值