一.通信协议的介绍
1.通信协议
通信协议:就是在互联网中,实体之间完成通信或服务所需要遵循的规则和约定。
语言交流的规则:语法,主谓宾如何排列。
说白了,就是咱俩说话用普通话还是家乡话,用英语还是法语,唱着说还是好好说,咱们提前规定好。这就是通信协议
语言中的语法:两个人类之间语言沟通的标准
通信协议:计算机与计算机之间沟通的语法
2.TCP/IP
IP:ip地址,标记在互联网上的每台机器的身份,用来确定地址和区分网关。 TCP:TCP协议面向连接的协议(通信之间必须先建立连接) 于是,TCP相对可靠,它建立的连接的过程称为3次握手。 TCP连接的特点: 1.需要三次握手 2.所有的消息,需要对方确认送达 UDP:基于数据包的协议 (不可靠的协议) 无需建立连接,发送消息也无需对方确认,无法保证数据的发送顺序,以及准确率 TCP和UDP的区别,如果TCP是打电话(你一句我一句),那么UDP就是发短信(发送 之后不知道对方是否收到)
3.HTTP
HTTP:超文本传输协议,网页协议,无 状态协议
因为无法监听当前连接的状态,会导致每次请求页面,收到页面之后,连接会被断开,导致用户体验非常差。
比如:打电话时我刚说完一句话,你就挂完了电话。购物时,登录账号密码,开始挑选商品,连接断卡,重新登陆,加入购物车继续挑选商品时,连接断开,重新登录,继续选择商品加入购物车,重新登录……解救剁手。
如何解决这个问题呢?
发明了一个其他技术用来帮助http记住状态:------会话跟踪技术cookie。
会话跟踪技术,在一次会话从开始到结束的整个过程,全程跟踪记录客户端的状态(如:是否登陆,购物车信息,是否下载,是否点赞,播放进度等等)
"会话跟踪技术cookie:会话跟踪技术,在一次会话从开始到结束的整个过程,全程跟踪记录客户端的状态(如:是否登录,购物车信息,是否下载,是否点赞,播放进度等等)"
cookie的作用是什么? "↑↑↑"
二.cookie
1.cookie的概念
cookie(会话跟踪技术),相当于第一次跟服务器连接后,服务器给你发的一个身份牌、通行记录,上面可以记录跟你有关的信息(是否登录,购物车的状态...),
下次只要再跟服务器通信,必须带着这个令牌,这样一来,服务器会直接知道你身份牌上所有的信息。
cookie存在浏览器的缓存中。
本地存储
什么是缓存?数据交换的缓冲区----临时储存
- cookie的特点
因为cookie会随着http发给服务器 1."只能使用文本(就是字符)文件"(如果浏览器可以随意在客户端机器生成文件,比如身份令牌,那将是个定时炸弹,安全问题会变得非常严重)(文本不会变成可执行文件,就不会是病毒) 2."文件有大小限制4K"(文件若没有大小限制,相当于身份令牌重几百斤,挂在脖子上什么感觉?) 3."数量限制,小于50条"(一般浏览器限制大概在50条左右,门禁卡里能存下一部蓝光高清么) 4."读取有域名限制/不允许跨域"(不可跨域读取,不允许跨路径,浏览器。只能由写入cookie的 同一域名 的网页进行读取。简单来说,谁写的cookie,谁才有权利读取) 5."时效/间限制"(每个cookie有时效,最短的有效期是:"会话级别(关闭浏览器,cookie销毁)",可以指定日期; "注意:安全学的基本理论:密码锁每次打开都需要重新输入密码,如果只输入一次密码,以后不在验证,就没有安全可言)"
3.cookie的操作:document.cookie
document.cookie是document对象上的属性 增删改查 字符串的拼接 document.cookie = "" 使用原则: cookie本地存储,跟服务器无关 cookie作用:记录http的连接状态,跟随http发给服务器 cookie也要在服务器的环境下使用
设置
会话级默认路径:
document.cookie = "name=abc"
cookie的格式要求,名称=值
在cookie 的名或值 中 不能使用分号(;)、逗号(,)、等号(=)以及空格这是cookie的赋值规则
指定有效期:
设置cookie的保存时间,通过给expires添加一个日期,设置cookie的过期时间
此处可以借用Date();
var date = new Date();
date.setDate(date.getDate()+28);
表示获取当前日期的天数,增加28天之后,重新设置给日期,此时date就表示未来的某个时间
document.cookie = "name=abc;expires=" + date;
此句表示,此条cookie在date的时间时效,而date的时间为当前日期加上28,也就是28天之后cookie失效
指定路径:
document.cookie = "user=admin;path=/;expires="+d;
console.log(typeof document.cookie); // String
console.log(document.cookie === ""); // true
查: console.log(document.cookie);
增: document.cookie = "user=admin"; // 被浏览器执行为:名字为user,值为admin
expires:日期对象
var d = new Date();
d.setDate(d.getDate()+3);
document.cookie = "user=admin;expires="+d;
一个document.cookie只能设置一条cookie
document.cookie = "b=20;path=/1908";
document.cookie = "c=30;path=/1908;expires=" + d;
document.cookie = "d=40;expires="+d+";path=/1908";
改:
document.cookie = "user=root";
document.cookie = "b=world;path=/1908";
var d = new Date();
d.setDate(d.getDate()+5);
document.cookie = "c=30;path=/1908;expires="+d;
删: 关闭浏览器就删了
删:
var d = new Date();
d.setDate(d.getDate()-1); // 减任何数都可以
document.cookie = "a=10;path=/1908;expires="+d;
document.cookie = "b=10;path=/1908;expires="+d;
document.cookie = "b=10;expires="+d;