什么是cookie

文章介绍了HTTP协议的无状态特性以及为了解决此问题引入的Cookie技术。Cookie用于在HTTP协议中管理状态,通过在客户端存储信息并在后续请求中发送回服务器来识别用户。它具有存储在客户端、浏览器相关、可删除、有数量和大小限制等特点。文章还展示了Cookie的创建过程、存储和检索方法,以及如何设置生存周期,并提供了Cookie操作的简单封装示例。
摘要由CSDN通过智能技术生成

1.名词解释:

1. 会话:用户进入网站  开始浏览到结束浏览的这样的一个过程 就称为一次会话 

2. http无状态:因为服务器没有“记忆能力”。它就无法支持需要连续多个步骤的“事务”操作。

例如电商购物,首先要登录,然后添加购物车,再下单、结算、支付,这一系列操作都需要知道用户的身份才行,但“无状态”服务器是不知道这些请求是相互关联的。Cookie 技术可以解决这个问题。

随着 Web 的不断发展,因无状态而导致业务处理变得棘手的情况增多了,比如用户登录到一家购物网站,即使他跳转到该站的其它页面后,也需要能继续保持登录状态,网站为了能够掌握是谁送出的请求,需要保存用户的状态。

     HTTP/1.1 虽然是无状态协议,但为了实现期望的保持状态功能,引入了 Cookie 技术,有了 Cookie 再用 HTTP 协议通信,就可以管理状态了。

2.cookie的状态管理

cookie具体如何进行状态管理呢?

     HTTP协议本身是无状态的。什么是无状态呢,即服务器无法判断用户身份。

Cookie实际上是一小段的文本信息(key-value格式)。

     客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。

    当浏览器下次再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。

服务器检查该Cookie,以此来辨认用户状态。

cookie的生成过程: 打开浏览器--->输入网址--->回车--->域名解析--->访问服务器

                  --->返回主页--->将cookie存储在浏览器

                  用户要访问二级页面时,打开新的窗口,会自动判断上一个页面中

                  是否含有cookie,如果有,就将cookie数据带入到下一个页面

3. 什么是cookie?

是会话跟踪技术

4. cookie的特点

(1)cookie存储在客户端浏览器里面,信息存储于用户硬盘,因此可以作为全局变量。

(2)cookie是与浏览器相关的。不同浏览器所保存的cookie也是不能互相访问的。

(3)cookie可能被用户删除。

(4)cookie默认是会话级别的.

会话级别:就是当浏览器关闭,那么cookie立即销毁,但是我们也可以在存储的时候手动设置cookie的过期时间

(5)cookie有数量与大小的限制,数量在50个左右,存储的数据量 4k 大小,cookie只支持存储string类型的数据。

(6)路径限制:存cookie时候可以指定路径,只允许子路径读取外层cookie,外层不能读取内层。

6.cookie数据的存和取

document.cookie = "键=值"              存储cookie
document.cookie                        获取cookie
//存储cookie
<body>
  <input type="button" value="存" id = "s"/>
  <input type="button" value="取" id = "g" />
  <a href="2.html" target="_blank">跳转至二级页面</a>
</body>
 
<script>
    let oSave = document.getElementById("s");
    let oGet = document.getElementById("g");
    //存cookie
    oSave.onclick = function(){
        document.cookie = "name=laowang";
        alert("存储cookie成功");
    }
    oGet.onclick = function(){
        alert(document.cookie);
    }
</script>

7.cookie的生存周期 

生存周期  就是cookie数据在浏览器上保存的时间
document.cookie = "键=值;expires=时间对象"

8.cookie的封装 

<script>
    //封装一个获取cookie值得方法
    function getCookie(key){
        let str = document.cookie;
        let arr = str.split("; ");//分号后的空格不要删 cookie之间的键值对是通过分号+空格
        for(let i=0; i<arr.length; i++){
            let item = arr[i].split("=");
            if(item[0] == key){
                return item[1];
            }
        }
        //没cookie,或者有cookie,但是没找到key 得不到cookie, 返回一个空字符串
        return "";
    }
    //封装一个设置cookie值得方法
    function setCookie(key,value,day){
        let d = new Date();
        d.setDate(d.getDate()+day);
        document.cookie = key+"="+value+";expires=" + d;
    }
    
    //删除cookie
    function delCookie(key){
        setCookie(key," ",-1);
    }
    

</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值