对cookie和session的理解

什么是Cookie

cookie是一些key-value的集合。

用户通过HTTP第一次访问一个服务器的时候,服务器就会把一个cookie返回给客户端,保存在客户端的内存或者硬盘中,同一个用户下次再访问服务器时,就把cookie带上,这样服务器就认出这个用户了。

cookie被加在http头中,作为其中的一个字段,其实就是一串字符串的形式。像这样:

Set-Cookie: userName=”wdx”; Domain=”abc123.net”;

一个cookie有多个属性,除了第一个Name之外,其他的属性名都是固定的,是关于cookie的过期时间、生成域名、路径之类的属性。下面是cookie 1.0 版本的属性介绍:

属性项属性项介绍
NAME=VALUE可以设置保存的key-value,NAME不能和下面的属性重名
Version默认是0,如果设置为1,那么cookie就要符合RFC2109规范
Comment注释,用户说明该cookie的用途
CommentURL服务器为此cookie提供的URL注释
Discard是否在会话结束后丢弃该cookie项,默认是false
Domain生成该cookie的域名
Max-Age最大失效时间,1.0版本是设置为多少秒后失效
Port该cookie在什么端口下可以回传服务器,多个端口用逗号隔开
Secure若设置此属性,则cookie只在SSH连接时回传


所以我们如果要保存多个key-value,就需要创建多个cookie。而用户每次访问服务器都会带着它们,这就造成传输数据量的增加,所以每个浏览器都会限制cookie的数量和大小。

什么是Session

由于cookie有数量和大小的限制,为了解决这个问题,session出现了。

有了session之后,用户只需要携带一个默认名为 JSEESIONID 的cookie去访问服务器,它的 value 是每个用户的唯一ID。

用户第一次访问服务器,会生成这个cookie,并且在服务器端实例化一个 HttpSession 对象,这个对象其实就是个Map,可以用来保存用户的信息。下一次用户再访问服务器,就可以根据ID找到这个session,并读取其中保存的用户信息。

两者的安全性

cookie因为是保存在客户端,所以可以在本地查看,甚至修改,因此安全性不高。

相对来说session就更安全,因为用户信息是保存在服务器端的,发给客户端的只是一个用户ID。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值