第五届字节跳动青训营 前端进阶学习笔记(七)HTTP协议入门

news2024/9/27 21:22:48

文章目录

    • 前言
    • HTTP协议概述
      • 1.输入网址到页面加载完成中间发生了什么
      • 2.HTTP协议
      • 3.HTTP协议的发展历程
      • 4.HTTP报文结构
          • (1)HTTP请求报文
          • (2)HTTP响应报文
      • 5.请求方法
          • (1)安全的方法
          • (2)幂等
      • 6.状态码
          • (1)常见状态码
      • 7.Resultful API
      • 8.常用请求头
      • 9.常用响应头
      • 10.缓存
      • 11.Cookie
    • HTTP/2
      • 1.HTTP/2概述
      • 2.帧
      • 3.消息和数据流
    • HTTPS
      • 1.HTTPS概述
      • 2.对称加密和非对称加密
    • 场景分析
      • 1.状态码为200就代表一定发起了请求吗?
      • 2.静态资源部署方案
      • 3.为什么会有OPTIONS请求
      • 4.跨域的解决方案
      • 5.鉴权方案
    • 实战
      • 1.AJAX
          • (1)XHR
          • (2)Fetch
      • 2.网络优化
      • 3.稳定性
      • 4.QUIC

前言

课程重点:

  • HTTP协议基本概述
  • HTTP协议场景分析
  • HTTP协议实战

HTTP协议概述

1.输入网址到页面加载完成中间发生了什么

浏览器处理输入信息
发起请求
接收响应
渲染网页

image.png

2.HTTP协议

  • 全程Hyper Text Transfer Protocol,超文本传输协议。
  • 基于TCP协议
  • 简单可扩展
  • 无状态

3.HTTP协议的发展历程

image.png

4.HTTP报文结构

(1)HTTP请求报文

以下是一个HTTP请求报文的基本结构。HTTP报文通常由三个部分组成,请求行、请求首部和请求实体。
其中,请求行通常包含请求方法、URL和HTTP协议版本;请求首部主要包含主机名、持久连接标记、用户代理和语言;请求实体通常会包含客户端想要发送到服务端上的数据,可以使用form-data格式或json格式。

code.png

(2)HTTP响应报文

响应报文也由三部分组成,分别是响应状态行、响应首部和响应实体。其中,响应状态行包含了HTTP协议版本、HTTP请求状态、请求状态描述三个参数;响应首部中通常会包含一些持久连接标记、时间日期信息、数据长度和类型等字段;响应实体中存放的就是我们向服务器请求的数据了。

code.png

5.请求方法

  • GET
  • POST
  • PUT
  • DELETE
  • HEAD,请求一个与GET请求相同的响应,但没有响应体
  • OPTIONS,描述请求类型
  • CONNECT,建立一个到目标资源服务器的隧道
  • TRACE,沿目标资源路径建立环回测试
  • PATCH,用于对资源应用部分更改
(1)安全的方法

不会修改服务器的数据的方法。
GETHEADOPTIONS

(2)幂等

同一个请求执行多次的效果是一样的,服务器的状态也是一样的。
GETHEADOPTIONSPUTDELETE

6.状态码

image.png

(1)常见状态码
  • 200 - 客户端请求成功
  • 301 - 资源转移到其他URL
  • 302 - 临时跳转
  • 401 - 请求未授权
  • 404 - 请求的资源不存在
  • 500 - 服务器内部错误
  • 504 - 网关或代理服务器不能在规定的时间内获得想要的响应

7.Resultful API

  • 每个URI代表一种资源
  • 客户端和服务端之间传递这种资源的表现层
  • 通过不同的请求方,对特定资源进行操作,实现表现层状态转化

8.常用请求头

image.png

9.常用响应头

image.png

10.缓存

缓存分为强缓存和协商缓存。强缓存直接根据缓存字段来判断是否使用缓存,而协商缓存需要先判断缓存是否可用,才决定是否使用缓存。

image.png

image.png

11.Cookie

image.png

HTTP/2

1.HTTP/2概述

  • HTTP/2的每条连接都是永久的,每个来源仅需要一个连接
  • 流控制:阻止发送方向接收方发送大量数据的机制
  • 服务器推送

2.帧

HTTP/2通信的最小单位,每个帧的帧头中都会至少标识出当前帧所属的数据流。

3.消息和数据流

消息是与逻辑请求或响应消息对应的完整的一系列帧。数据流是已建立连接内的双向数据流,可以承载一条或多条消息。

HTTPS

1.HTTPS概述

  • 经过TSL/SSL加密

image.png

2.对称加密和非对称加密

  • 对称加密:加密和解密使用的是同一组密钥
  • 非对称加密,加密和解密需要分别用到公钥和私钥

image.png

场景分析

1.状态码为200就代表一定发起了请求吗?

状态码为200不一定代表该请求经过了一系列完整的HTTP请求的过程,若资源设置了强缓存字段,将会直接从本地读取缓存(from disk cache)。

image.png

2.静态资源部署方案

缓存+CDN+文件HASH

3.为什么会有OPTIONS请求

OPTIONS请求用于获知服务端是否允许跨域请求。
ps.跨域指请求的主机名和资源所在的主机名的协议、主机名、端口号三个有任意一个不同的部分,就会发生跨域。

4.跨域的解决方案

  • 代理服务器
  • IFrame

5.鉴权方案

  • Session + Cookie
  • JWT

实战

1.AJAX

(1)XHR
(2)Fetch
  • XMR的升级版
  • 使用Promise
  • 模块化设计
  • 通过数据流处理对象,支持分块读取

2.网络优化

image.png

3.稳定性

image.png

4.QUIC

  • 0-RTT建联
  • 类似TCP的可靠传输
  • 类似TSL的加密传输,支持完美前向安全
  • 用户空间的拥塞控制,最新的BBR算法
  • 支持h2基于流的多路复用,但没有HTTP的HOL问题
  • 前向纠错FEC类似MPTCP的Connection migration

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/175303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

表单标签的学习

表单标签的学习 textarea textarea标签来表示多行文本框,又叫做文本域。与其它 标签不同, textarea标签是单闭合标签,它包含起始标签和结束标签,文本内容需要写在两个标签中间。 input input type“text” 表示文本框 &#xff…

CSS入门学习笔记+案例

目录 一、 CSS的基础 1、快速了解 2、CSS应用方式 ①在标签上 ②在head标签中写style标签 ③写到文件中 二、CSS的选择器 1、ID选择器 2、类选择器 3、标签选择器 4、属性选择器 5、后代选择器 三、样式覆盖 四、CSS的样式 1、高度和宽度 2、块级和行内标签 3、字体…

七大排序---详细介绍

插入排序从第二个数,往前面进行插入,默认第一个数字有序,插入第二个,则前两个都有序了,一个一个往后选择数字,不断向前进行插入直接插入排序时间复杂度:最好情况:全部有序&#xff0…

决策树应用

使用Python中的sklearn中自带的决策树分类器DecisionTreeClassifier import sklearn clf sklearn.tree.DecisionTreeClassifier(criterionentropy)sklearn中只实现了ID3与CART决策树,所以我们暂时只能使用这两种决策树,在构造DecisionTreeClassifier类…

计算机视觉OpenCv学习系列:第六部分、图像操作-2

第六部分、图像操作-2第一节、图像几何形状绘制1.几何形状2.填充、绘制与着色3.代码练习与测试第二节、多边形填充与绘制1.多边形绘制函数2.绘制与填充3.代码练习与测试第三节、图像像素类型转换与归一化1.归一化方法与支持2.归一化函数3.代码练习与测试第四节、图像几何变换1.…

小智学长嵌入式入门学习路线_1 C语言基础

原课程链接: 嵌入式开发系统学习路线 从基础到项目 精品教程 单片机工程师必备课程 物联网开发 c语言 2022追更 前言 在学习过程中,老师提到了一个很重要的思想:主要从学习嵌入式的角度学习各项技能。比如c语言,语法有很多&…

【Java|golang】1807. 替换字符串中的括号内容

给你一个字符串 s ,它包含一些括号对,每个括号中包含一个 非空 的键。 比方说,字符串 “(name)is(age)yearsold” 中,有 两个 括号对,分别包含键 “name” 和 “age” 。 你知道许多键对应的值,这些关系由…

Linux基本功系列之chmod命令实战

文章目录一. chmod命令介绍二. 语法格式及常用选项三. 参考案例3.1 对全部用户增加写的权限3.2 所有用户减去读的权限3.3 给文件的所有者和所有组加上读写权限3.4 设置所有用户为读写执行的权限3.5 文件拥有着为rwx,所属组为rw,其它为r3.6 去掉所有者的r…

高级Spring之ApplicationContext功能

第一步,我们先来看这个接口的内部结构,了解别人的内部,知己知彼,百战不殆: 这个接口的扩展功能主要体现在它继承的四个接口上: MessageSource:国际化功能 ResourcePatternResolver: 资源访问功…

第23章_Tomcat和JavaEE入门

一、JavaEE简介什么是JavaEEJavaEE(Java Enterprise Edition),Java企业版,是一个用于企业级web开发平台。最早由Sun公司定制并发布,后由Oracle负责维护。JavaEE平台规范了在开发企业级web应用中的技术标准.在JavaEE平台…

Acwing——第 87 场周赛

题目链接 4797. 移动棋子 4798. 打怪兽 4799. 最远距离 题目描述 4797. 移动棋子 给定一个 5 行 5 列的方格矩阵,其中一个方格中有一个棋子。 现在,我们希望将棋子移动至矩阵的最中心方格中,即将其移动至矩阵的第 3行第 3列方格中。 每次…

8种时间序列分类方法总结

对时间序列进行分类是应用机器和深度学习模型的常见任务之一。本篇文章将涵盖 8 种类型的时间序列分类方法。这包括从简单的基于距离或间隔的方法到使用深度神经网络的方法。这篇文章旨在作为所有时间序列分类算法的参考文章。 时间序列定义 在涵盖各种类型的时间序列 (TS) 分…

分布式锁与实现(一)-为什么需要分布式锁

1 在开发中的锁是什么 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。 在java中我们有两种资源控制方式Synchronized与AQS 1.2 基于Synchronized实现的锁控制 Synchronized是java提供的一…

JDK 8新特性之Lambda表达式

目录 一:使用匿名内部类存在的问题 Lambda表达式写法,代码如下: 二:Lambda的标准格式 三:Lambda的实现原理 四:Lambda省略格式 五:Lambda的前提条件 六:函数式接口 七:Lambd…

05回溯法

文章目录装载问题回溯算法优化算法构造最优解0-1背包问题批处理作业调度问题图的M着色问题N皇后问题最大团问题回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回&…

12. 字典dict类型详解

1. 基础知识 (1) 字典(dictionary)是Python中另一个非常有用的内置数据类型。 (2) 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。 (3) 字典是一种映射类型&#xff…

Flowable进阶学习(三)流程、流程实例挂起与激活;启动、处理、结束流程的原理以及相关表结构与变动

文章目录流程挂起与激活流程实例挂起与激活启动、处理、结束流程的原理一、启动流程的原理启动一个流程实例时涉及到的表及表结构:ACT_RU_EXECUTION 运行时流程执行实例ACT_RU_IDENTITYLINK 运行时用户关系信息ACT_RU_TASK 运行时任务表ACT_RU_VARIABLE 运行时变量表二、处理流…

过滤器Filter总结

过滤器Filter1. 简介2. 快速入门3. 执行流程4. 使用细节4.1 拦截路径4.2 过滤器链5. 案例5.1 需求5.2 LoginFilter1. 简介 过滤器是JavaWeb三大组件之一(Servlet、Filter,Listner); 作用: 把对资源(servl…

Ubuntu22.04 安装 ssh

文章目录Ubuntu22.04 安装 ssh一、 环境配置二、 启动远程连接三、 开放端口四、 远程连接Ubuntu22.04 安装 ssh 一、 环境配置 安装 Ubuntu 系统后,我们首先需要配置管理员 root 用户: sudo passwd root然后,进行软件源的更换&#xff1a…

14 Java集合(Map集合+HashMap+泛型使用+集合面试题)

集合14.11 Map集合14.11.1 Map集合特点14.11.2 Map集合体系结构14.12 HashMap14.12.1 HashMap基本使用14.12.2 HashMap实际应用14.12.3 HashMap练习14.12.4 HashMap底层实现原理14.12.5 put的过程原码14.12.6 resize过程原码14.12.7 get的过程原码14.13 HashTable14.14 泛型高级…