好好理解下Cookie

Cookie的产生

由于Http协议是一种无状态协议(什么是无状态协议?web服务器不能识别,哪些请求是同一个浏览器发出的,每一次请求都是完全孤立的, 比如浏览器发一个请求,再发一个请求,服务器是无法识别这两次请求是同一个浏览器发出的!),而服务端的业务逻辑必须是要有状态的。比如如何实现购物车呢?所以web服务器必须产生一种机制,来唯一识别用户,并且记住该用户的状态以及信息! 

 

Cookie机制

· cookie机制采用的是在客户端保持HTTP状态信息的方案

· cookie是在浏览器访问web服务器的某个资源时,由web服务器在http响应信息头中附带传送给浏览器的一个小文本文件

· 一旦web浏览器保存了某个cookie,那么它在每次web服务器访问浏览器的时候都会在HTTP请求头将这个Cookie返回给web浏览器

· 底层的实现原理:WEB服务器通过HTTP响应中添加的Set-cookie响应头字段将Cookie信息发送给浏览器信息发送给浏览器,浏览器则通过在HTTP请求信息中增加Cookie请求头字段将Cookie回传给服务器

· 一个Cookie只能标识一种信息,他至少含有该表示信息的名称(NAME)和设置值(VALUE)

· 一个WEB站点可以给浏览器发送多个cookie,一个web浏览器也可以存储多个WEB站点提供的Cookie

· 浏览器一般可以存储300个cookie,每个站点可以存放20个Cookie,每个cookie的大小限制为4KB

 

会话Cookie和持久化Cookie

· 会话Cookie在浏览器关闭时,Cookie也消失,会话Cookie保存在硬盘上,而是保存在内存里

· 持久化Cookie可以设置maxAge属性,该属性表示cookie的存活时间,以秒为的单位,maxAge(0)表示立刻删除该Cookie,如果设置了有效时间,这些cookie过期后就会保存在硬盘上

·储存在硬盘上的cookie可以在不同浏览器进程间进行共享,比如两个IE窗口,而对于保存在浏览器内存中的Cookie不同的浏览器有不同的方法

 

Cookie属性选项

当前有两个版本:Version 0和Version 1,他们有两种设置的响应头的标识,分别是set-cookie和set-cookie 2

Version 0属性介绍

· NAME=VALUE:键值对,可以设置要保存的key/value,这里的NAME不能和其他属性项的名字一样

· Expires : 过期时间,设置在某个时间点过期

· Domain : 生成Cookie的域名

· Path : 该Cookie是在哪个路径下生成的

· Secure : 如果设置为ture, 那么这个cookie只能用https协议发送给服务器

Version 1属性介绍

· Name,Expires,Domain,Path,Secure

· MaxAge : 设置最大失效时间

· Port : 该cookie在什么端口下互传服务器

· Discard :是否在会话结束后丢弃该Cookie

· Comment :注释作用

· Version :默认为0,表示遵循RFC 2965规范,如果要设置为1,则表示要遵循 RFC 2109规范

 

Cookie的secure与httpOnly属性(这两个属性可以增加Cookie的安全性)

· secure属性可防止信息在传递的过程中被监听捕获后导致信息泄露,如果设置为true,可以限制只有通过https访问时,才会将浏览器保存的cookie传递到服务端,如果通过http访问,不会传递cookie。

· httpOnly属性可以防止程序获取cookie,如果设置为true,通过js等将无法读取到cookie,能有效的防止XSS攻击。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值