cookie

一.通信协议的介绍

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存在浏览器的缓存中。
本地存储
什么是缓存?数据交换的缓冲区----临时储存
  1. 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; 此句表示,此条cookiedate的时间时效,而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;
原文地址:https://www.cnblogs.com/wufenfen/p/11903666.html