cookie

170 阅读11分钟

计算机相关学科

  • 数据结构(算法 存储结构)

    算法(固定套路)

    1. 递归
    2. 贪心算法(马拉车算法)
    3. 回溯算法
    4. 排序算法
    5. DFS 深度优先搜索 BFS 广度优先搜索

    逻辑结构和存储结构

    1. 数组 (查询快 添加慢)
    2. 链表(头节点、 单向链表 、双向链表、循环链表(查询慢 增删改快))
    3. 队列 (FIFO、先进先出)
    4. 栈(先进后出)
    5. 树(红黑树 、二叉树)(MySQL的底层的索引存储结构就是树)
    6. 散列表(hash)
    7. 广义表
  • 计算机组成原理

    冯诺依曼原理

  • 计算机网络

将对应的多台电脑的系统通过网络介质进行传播和共享

  • 操作系统

windows (dos命令行)

  1. cd #进入某个文件夹
  2. ipconfig #查看当前网络配置
  3. ping #测试当前的网络畅通
  4. cls #清除命令行内容

linux(linue指令)

  1. ls #查看对应的文件夹下的内容
  2. vm #使用vim编辑器
  3. clear #清除命令行内容

计算机网络相关知识

概述

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路和通信设备连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

网络操作系统

是一种能代替操作系统的软件程序,是网络的心脏和灵魂,是向网络计算机提供服务的特殊的操作系统。借由网络达到互相传递数据与各种消息,分为服务器(Server)及客户端(Client)(CS架构)

网络管理软件

网络管理软件就是能够完成网络管理功能的网络管理系统,简称网管系统。借助于网管系统,网络管理员不仅可以经由网络管理员与被管理系统中代理交换网络信息,而且可以开发网络管理应用程序。

网络通信协议

网络通信协议是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络提供通信支持,是一种网络通用语言。

网络分类
  1. 局域网
  2. 广域网
  3. 城域网
  4. 无限网
性能相关指标
  1. 速率
  2. 带宽
  3. 时延
  4. 利用率
  5. 丢包率
通信方式
  1. 电话(直通的)
  2. 分组(将数据报包(data packect)进行分组报文头(header)报文(主要数据))
  3. 报文
网络(OSI)七层模型(了解)
  1. 物理层(物理层是参考模型中的最底层,主要定义了系统的电气、机械、过程和功能标准)
  2. 数据链路层(数据链路层是在通信实体间建立数据链路联接,传输的基本单位为“帧”,并为网络层提供差错控制和流量控制服务。)
  3. 网络层(网络层主要为数据在节点之间传输创建逻辑链路,通过路由选择算法为分组选择最佳路径,从而实现拥塞控制、网络互联等功能。)
  4. 传输层(传输层(是网络体系结构中高低层之间衔接的一个接口层。传输层不仅仅是一个单独的结构层,而是整个分析体系协议的核心)
  5. 会话层(会话层的主要功能是负责维护两个节点之间的传输联接,确保点到点传输不中断,以及管理数据交换等功能。)
  6. 表示层(会话层为在应用过程之间传送的信息提供表示方法的服务。)
  7. 应用层(应用层是OSI模型中的最高层,是直接面向用户的一层,用户的通信内容要由应用进程解决,这就要求应用层采用不同的应用协议来解决不同类型的应用要求,并且保证这些不同类型的应用所采用的低层通信协议是一致的。)

image.png

TPC/IP协议

应用较多一个标准网络传输协议,主要核心TCP协议IP协议。

  • IP协议根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务
  • TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议
TCP和UDP的区别(重要*)
  • TCP面向连接的。数据的发送必须要建立连接,通过连接的渠道发送对应的字节流数据。
  • UDP无连接的。数据发送不需要建立连接通过对应的数据报包的形式进行数据的发送
  • TCP是—对—传输的,而UDP可以—对多进行传输
  • UDP信息报文的报文头很短,只有8字节,相对于TCP的20字节报文信息,UDP的包头开销很小
  • TCP安全、可靠、面向连接,但是传输速度慢。UDP不安全、不可靠、面向非连接,但是传输速度快。
TCP的三次握手和四处挥手(重要*)
  • TPC三次握手说的是对应的建立连接的过程
    1. 客户端发送请求到服务器端要求建立连接
    2. 服务端收到消息 并返回确认信息
    3. 客户端建立连接
  • TPC四次挥手说的是断开连接的过程
    1. 客户端发送请求到服务器端要求建立连接
    2. 服务器端接收端开的请求,并返回确认信息
    3. 服务器断开连接
    4. 客户端断开连接
应用层相关协议(不重要不用记)
  1. Telent 远程登录传输协议
  2. FTP 文件传输协议
  3. HTTP 超文本传输协议
  4. SNMP 邮件传输协议

HTTP 和 HTTPS 都是超文本传输协议 (需要记)

  • http 使用明文传输(不安全)端口80
  • https 使用密文传输 (安全)端口443(OPENSSL 进行加密(对称加密 非对称加密 hash加密))
  • http 和 https 都是基于TCP/IP协议的
http版本划分(需要记)
  • 1.0 版本 (短连接)
  • 1.1 版本 (长连接)
  • 2.0版本
版本区别
  • 1.1版本在1.0之上进行增强,主要是支持长连接(新增了一个catch的属性和Connection:keep-alive字段在对应的报文头上新增了host属性),新增的请求方式(1.0的请求方法GET POST) OPTION、DELETE、PATCH、CONNECTION、HEAD。数据进行压缩(新增传输模式(流水线非流水线))新增对应的状态码(409 .410)
  • 1.0版本的强制缓存是通过expires属性来指定的1.1是通过catch-control属性来指定的
  • 2.0版本在1.1版本进行增强、主要支持多路复用(2.0之前一个连接只能发生一个请求、多个请求共有一个连接)一个请求的域名下的连接包含这个域名的所有请求。(2.0主要传输的数据以流传输2.0之前是以文件传输)HTTP2.0使用HPACK算法对header的数据进行压缩
1.1的流水线和非流水线式
  • 流水线方式是客户端在收到HTTP的响应报文之前就能接着发送新的请求报文〈不断的push请求过去,和工厂流水线一样,让S端处理)。当然,HTTP服务器S端得按照客户请求的顺序响应,以保证客户端能够区分出其每次请求的响应内容。
  • 非流水线方式是客户在收到前一个响应后才能发送下一个请求。
HTTP特点
  • 无状态(客户端发送的请求 服务器无法区分)
  • 无连接(连接建立完成就会关闭)
  • 长连接/短连接

Cookie

概述

cookie是一个位于浏览器的本地存储(大小一般为4kb左右),它会随时请求发送

解决HTTP的无状态问题
  1. 两个客户端访问同一个服务器地址,由于HTTP的无状态问题,服务器并不准备区分对应的客户端,会导致数据发送错误,为了解决这个无状态问题,客户端必须携带对应的标识(sessionID)让服务器进行区分,如果标识(sessionID)是客户端随意捏造的,会导致服务端无法区分。
  2. 最好的解决方式就是由服务器产生一个标识(sessionID)分发给对应的客户端,在客户端上需要存储这个标识(sessionID),存储的技术就叫做cookie,客户端再请求的时候再携带这个标识(sessionID),为了准确区分,那么服务器产生的标识(sessionID)必须存储在对应的服务端上,服务器能准确验证,那么就 决了http的无状 得容器就是cookie,所以cookie问题。
  3. 综上所得,HTTP的无状态问题主要是通过sessionID 来解决的,而客户端存储 sessionID 的容器就是cookie,所以cookie 的诞生解决了HTTP的无状态问题
cookie的获取

主要返回的是一个字符串(只显示前面的键值对)

console.log(document.cookie)//获取到的是一个字符串 这个属性可以设置 只会显示键值对 其他属性不会显示
cookie的显示格式
name=value;expires=过期时间;domain=跨域地址;path=携带cookie的路径;secure是否使用https
  1. name:value 键值对 赋值就是设置
  2. expires 过期时间设置(默认为session 浏览器关闭就过期)
  3. domain 指定跨域地址(默认当前的的地址)
  4. path 指定携带路径
  5. secure 是否采用https
cookie的特点(需要记)
  • cookie存储只有4kb左右
  • cookie 会随请求携带
  • cookie存储形式为字符串
  • cookie可以设置过期时间
  • cookie可以跨域(domain)
  • cookie 不安全 可以篡改和伪造
cookie 的增删改查
  1. 给document.cookie进行赋值可以添加新的cookie、如果这个cookie的name存在就是修改。如果这个cookie的name不存在就是添加
  2. 设置cookie 过期就是删除
相关方法(传入字符串返回字符串)(需要记)
  1. decodeURIComponent 解码
  2. encodeURIComponent 编码
第三方cookie.js的使用

其一 cdn 地址 gitee 文档地址

image.png 其二 cdn地址 gitee文档地址

image.png

本地存储
  • localStorage 本地存储(除非手动删除 不然是不能删除的)
  • sessionStorege 本地存储(浏览器关闭自动删除 session的生命周期)
相关方法
  1. setltem 设置数据进入(可以添加可以修改)
  2. getltem 获取数据(返回数据)
  3. removeltem 删除数据
共同点
  1. 存储的数据都是字符串
  2. 他们都是位于浏览器的本地存储(可以篡改和伪造)
localStorage 和 cookie 的区别
  1. localStorage 的存储大小大概是4m-10m(5m左右),cookie存储大小为4b左右
  2. cookie会随请求发生。localStorage不会随请求发送
  3. cookie 可以跨域,localStorage 不会跨域
  4. cookie只能存储端的字符串,localStorage能存储base64的字符串
  5. cookie和localStorage在浏览器上的存储位置不一致
tooken存储

tooken(令牌)用于登录验证的(JWT (JSON WEB TOOKEN))

流程

  1. 输入用户名密码点击登录
  2. 发送用户名及密码给服务器
  3. 服务器验证用户名密码 成功返回tooken
  4. 浏览器获取服务器 返回的tooken存储器起来(本地存储 localStorage 和 sessionStorage)
  5. 下次访问服务器就需要取出里面的tooken带上(放在请求里)
JSON格式

json是一种数据交互格式,一般用于数据传输(跨语言跨平台)

json格式的显示形式
  • 对象显示 var jsonStr="{}"
  • 数组显示 var jsonStr="[]"

json格式的对象里面的key必须使用双引号包起来,里面的字符串不能使用单引号

js字面量的声明对象就是{}声明数组就是[] 所以在对应的js中对象和json格式字符串可以相互转换

相关转换方法

字符串转为js对象JSON.parse

// json格式 字符串转为对象
var jsonStr='{"name":"jack"}'
// JSON.parse 方法返回一个对象
console.log(JSON.parse(jsonStr))

对象转换为json格式字符串JSON.stringift

// 对象转换为json格式字符串
var obj={age:18,username:'rose'}
// JSON.stringify 方法返回一个字符串
console.log(JSON.stringify(obj))

隐式转换为字符串会默认调用toString方法 隐式转换为字符串(toString) console.log({ name:'jack' }+"")//[object object]