Cookie的介绍与应用

        HTTP是无状态协议,不对之前发送过的请求和响应状态进行管理。加入一个需要登录的web页面,如果不对登录状态进行管理,那么每次跳转到一个新页面,都需要重新登录。为了解决这一问题,引入了cookie技术。

        Cookie通过在请求和响应的报文中写入状态信息,来控制客户端的状态。

        Cookie根据服务器端发送的响应报文中一个名叫Set-Cookie的首部字段,让客户端保存Cookie。当下次客户端再向服务器发送请求时,客户端会自动把Cookie加到请求报文中发送出去。服务器接受到Cookie信息后,会检查是从哪个客户端发来的信息,并与服务器上的记录对比,得到之前的状态信息。

-----------------------------------分割线---------------------------------

        今天在解决一个线上问题的时候,正好用到了cookie。

        问题是这样的,在一个vue项目中,由于产品的设计,在点击一级导航的时候,需要动态改变二级导航的数据。功能很好实现,but,当我刷新页面的时候一脸**,因为二级导航的数据在刷新后恢复到初始数据,导致导航不能正确显示。于是我在点击一级导航时,把对应的二级导航数据存到cookie中,再用cookie中的数据去渲染页面,完美解决了刷新后不能显示的问题。

        在写代码的时候,才知道cookie只能存字符串,不能存对象,所以需要对数据进行处理再存储,代码如下:

//subArr为需要存储的二级导航对象,先转换成json字符串再存储
document.cookie='subArr='+JSON.stringify(subArr);
getCookie(c_name){
    if (document.cookie.length>0){
      var c_start=document.cookie.indexOf(c_name + "=")
      if (c_start!=-1){
        c_start=c_start + c_name.length+1
        var c_end=document.cookie.indexOf(";",c_start)
        if (c_end==-1) c_end=document.cookie.length
        return unescape(document.cookie.substring(c_start,c_end))
        }
      }
    return ""
}
JSON.parse(this.getCookie('subArr'));    //获取到cookie后再把字符串转换成json对象

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值