cookie的作用组成以及使用

cookie

在我们第一次登录某个网站的时候,需要输入账号密码,登录成功之后,服务器会给客户端一个身份凭证,这些身份凭证就是cookie。在再次访问这个网站的时候,浏览器会将这个cookie附带到请求当中,就不需要再次输入账号密码来进行验证了。cookie在访问不同的网站的时候,它会根据记录的信息自动出示不同的身份凭证。

cookie的组成:

key :键–可以理解为这个cookie的名字
value:值–相当于一个身份编号
domain:域–表示cookie属于哪个网站
path:路径–表示cookie属于这个网站的哪个路径的,可能同一个网站下面不同路径需要不同的身份验证。
secure:表示是否使用安全传输,如果为true,那么请求的协议必须使用https,如果为false,那么请求的协议可以使用http,也可以使用https。
exprie:表示cookie的过期时间。
当一个cookie满足以下条件的时候,那么在浏览器向服务器发送请求的时候,就会发送这个cookie:
(1)cookie没有过期
(2)请求的域,路径和cookie里的domain,path匹配。在判断域是否匹配的时候,不看端口。
(3)secure是true,那么请求的协议必须是https,如果是http协议的话,那么也不可以使用这个cookie。

设置cookie

有两种方式。比较常见的是服务器响应,还有一种是客户端自行设置。
(1)服务器响应:服务器会在给客户端响应的消息中包含cookie,浏览器会自动把cookie存起来。
服务器可以通过设置响应头,来告诉浏览器应该如何设置cookie:

set-cookie: cookie1
set-cookie: cookie2
set-cookie: cookie3
...

因此,服务器在一次响应中可以设置多个cookie,cookie的格式:

键=值; path=?; domain=?; expire=?; max-age=?; secure; httponly

键值是必须有的,剩下的都是可选的。其中:max-age是cookie的相对有效期,和expire设置一个即可。httponle表示该cookie仅能用于传输,不允许在客户端通过js获取。
(2)客户端自行设置,这种方式比较少见,比如用户关闭了某个广告,并选择了「以后不要再弹出」,此时就可以把这种小信息直接通过浏览器的JS代码保存到cookie中。后续请求服务器时,服务器会看到客户端不想要再次弹出广告的cookie,于是就不会再发送广告过来了。
既然cookie是存放在浏览器端的,所以浏览器向JS公开了接口,让其可以设置cookie

document.cookie = "键=值; path=?; domain=?; expire=?; max-age=?; secure";

在客户端设置cookie,和服务器设置cookie的格式一样,只是有下面的不同:

  • 没有httponly。因为httponly本来就是为了限制在客户端访问的,既然你是在客户端配置,自然失去了限制的意义。
  • path的默认值。在服务器端设置cookie时,如果没有写path,使用的是请求的path。而在客户端设置cookie时,也许根本没有请求发生。因此,path在客户端设置时的默认值是当前网页的path
  • domain的默认值。和path同理,客户端设置时的默认值是当前网页的domain
  • 其他:一样
  • 删除cookie:和服务器也一样,修改cookie的过期时间即可(设置max-age=-1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值