栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

38协议 cookie特点及封装

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

38协议 cookie特点及封装

38协议 cookie特点及封装 一、协议

协议,就是事先的一种约定、规则、规范、标准。

常见协议

- HTTP、HTTPS超文本传输协议
    
- FTP文件传输协议
    
- SMTP简单邮件传输协议

TCP协议

TCP/IP协议栈分为四层,每一层都有特定的协议与对方进行通信,而协议之间的通信最终都要转化为0和1的电信号,通过物理介质进行传输才能达到对方的电脑,因此物理介质是网络通信的基石

三次握手

- 建立连接时,客户端发送SYN包 (SYN=i) 到服务器,并进入到SYN-SEND状态,等待服务器确认
    
- 服务器收到SYN包,必须确认客户的SYN (ack=i+1) ,同时自己也发送一个SYN包 (SYN=k) ,即SYN+ACK包,此时服务器进入SYN-RECV状态
    
- 客户端收到服务器的SYN+ACK包,向服务器确认报ACK (ack=k+1) ,次此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据

四次挥手

- client发送一个FIN,用来关闭client到server的数据传送,client进入FIN_WAIT_1状态
    
- server收到FIN后,发送送一个ACK给client,确认序号为收到序号+1 (与STN相同,一个FIN占用一个序号) ,server进入CLOSE_WAIT状态
    
- server发送一个FIN,用来关闭server到client的数据传送,server进入LAST_ACK状态
    
- client收到FIN后,client进入TIME_WAIT状态,接着发送一个ACK给server,确认序号为收到序号+1,server进入CLOSED状态,完成四次挥手

HTTP协议

HTTP协议即超文本传输协议,是一个 浏览器端 和 服务器端 请求和响应标准

- 常用请求方法	GET,POST
    
- 请求	请求行、请求头、请求主体
    
- 响应	状态行、响应头、响应主体

HTTP的请求协议

HTTP请求由状态行、请求头、请求正文三部分组成
    
    状态行	包括请求方式method、资源路径URL、协议版本version
    
    请求头	包括一些访问的域名、用户代理、cookie等信息
    
    请求正文	就是HTTP请求的数据

HTTP协议特点

无状态的,多次请求之间没有相关性

二、cookie

cookie的特点

- cookie中的数据可以被同一个网站的页面所共享
    
- 不同浏览器的cookie不能共享
    
- cookie的数据存储在浏览器中,每次请求服务器,在请求报文中携带cookie的数据,发送个服务器
    
- 服务器端无法直接操作cookie,是通过在服务器端设置响应头的方式,通知浏览器对coolie进行设置
    
- cookie中的数据有效期,不设置是会话级别的,浏览器关闭,会话结束,数据销毁,可以人为设置cookie的有效期
    
- cookie存储容量小,约4kb

cookie的查看

document.cookie
三、cookie封装

使用对象将cookie封装

//定义对象cookie

let cookie = {
    
    //设置对象里面的设置cookie事件
    //key	cookie的名称
    //value	cookie的值
    //time	cookie的有效时间(单位:min)
    
    setcookie(key, value, time){
        
        //判断cookie的名称或cookie的值是否存在
        
        if(!key || !value){
            
            //如果cookie的名称和cookie的值不存在返回空
            
            return null
        }
        
        //定义exp为空,方便后面赋值
        
        let exp = ""
        
        //如果cookie的有效时间存在
        
        if(time){
            
            //获取时间date
            
            let date = new Date()
            
            //获取当前时间戳now
            
            let now = date.getTime()
            
            //有效时间的结束时间
            
            date.setTime(now + time * 60 * 1000)
            
            //将结束时间转换为GTM标准时间
            
            let gmt = date.toGMTString()
            
            //exp赋值
            
            exp = ";expires=" + gmt
        }
        
        //当time存在时
        //return document.cookie = key + "=" + value + ";expires=" + gmt
        //当time不存在时
        //return document.cookie = key + "=" + value + ""
        
        return document.cookie = key + "=" + value + exp
    },
    
    //设置对象里面的获取cookie事件
    //key	cookie的名称
    
    getcookie(key){
        
        //将cookie以";"分割成有若干个值的数组arr
        
        let arr = document.cookie.split(";")
        
        //使用map()函数遍历
        
        let value = arr.map(item => {
            
            //因为arr里面的值item前后有空格,所以使用trim()函数
            //当前后没有空格的arr里面的值item.trim()是以cookie的名称key开头时
            
            if(item.trim().indexOf(key) == 0){
                
                //将arr里的值item以"="分割成cookie包含名称key和cookie的值value的数组
                //取该数组的第1项就是key对应的cookie的值
                
                return (item.split("="))[1]
            }
        })
        
        //value本为一个只有一个key对应的cookie的值和多个undefined的数组
        //value.join("")就是将value转为字符串且直接连接,这种连接方式会将undefined直接忽略掉
        //打印的就是需要的key对应的cookie的值
        
        console.log(value.join(""))
    }
}

//实例化
//设置cookie

cookie.setcookie("name", "zhangsan")
cookie.setcookie("age", 18, 60)
cookie.setcookie("sex", "nan")

//获取cookie名称对应的值

cookie.getcookie("name")

//zhangsan
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号