HTTP协议

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

  1. 浏览器处理输入信息:用户在浏览器中输入网址,浏览器将网址解析为请求。
  2. 发起请求:浏览器根据解析后的信息构建并发送HTTP请求到服务器。
  3. 接收响应:服务器接收到请求后,处理并生成响应,将其发送回浏览器。
  4. 渲染网页:浏览器接收响应,解析HTML文档,并通过渲染引擎生成用户界面,最终显示网页内容。

2.HTTP协议

image.png

3.HTTP协议的发展历程​​​​​​               HTTP各版本区别

  • HTTP/0.9:最早的HTTP版本,只支持GET请求,且数据传输格式非常简单。
  • HTTP/1.0:引入了更多功能,包括请求和响应头部,支持更多的请求方法。每个请求/响应都需要建立独立的TCP连接。
  • HTTP/1.1:支持持久连接(keep-alive),即在一个TCP连接上可以发送多个请求/响应,减少了连接建立和断开的开销。还引入了管道化请求和分块传输编码。
  • HTTP/2:通过二进制协议进行通信,相比于文本协议更高效。支持多路复用(允许在同一个连接上并行发送多个请求和响应),头部压缩和流量控制。
  • HTTP/3:基于QUIC协议,改进了连接建立的速度和安全性。QUIC协议结合了传输和加密,支持0-RTT(零往返时间)连接,改进了拥塞控制和丢包恢复。

 image.png

4.HTTP报文结构

  • HTTP请求报文

    • 请求行:包含请求方法(如GET、POST)、URL和HTTP版本。
    • 请求头部:包含主机名、用户代理、语言等。
    • 请求实体:请求中包含的实际数据,例如表单数据或JSON。
  • HTTP响应报文

    • 响应状态行:包含HTTP版本、状态码和状态描述。
    • 响应头部:包含内容类型、长度、缓存控制等。
    • 响应实体:实际返回的数据,如HTML文档、图片等。

5.请求方法

image.png

  • 安全的方法:不会修改服务器上的数据。

    • GET:请求数据,通常是读取操作。
    • HEAD:请求数据的头部信息,通常用于检查资源的有效性。
    • OPTIONS:询问服务器支持哪些请求方法。
  • 幂等方法:多次请求的效果相同,服务器状态不变。

    • GETHEADOPTIONSPUTDELETE

(2)幂等

同一个请求执行多次的效果是一样的,服务器的状态也是一样的。
GET、 HEAD、OPTIONS、PUT、DELETE

6.状态码

(1)常见状态码

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

7.Resultful API

  • 每个URI代表一种资源。
  • 客户端和服务端之间传递资源的表现层(例如JSON)。
  • 通过不同的HTTP请求方法(如GET、POST、PUT、DELETE)对资源进行操作,实现状态转化。

8.常用请求头

image.png

9.常用响应头

image.png

10.缓存

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

image.png

11.Cookie

HTTP/2

image.png

image.png

image.png

HTTPS

image.png

场景分析

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

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

2.静态资源部署方案

缓存+CDN+文件HASH

3.为什么会有OPTIONS请求

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

4.跨域的解决方案

  • 代理服务器:将请求转发到目标服务器以绕过跨域限制。
  • IFrame:使用iframe嵌套不同源的内容。

5.鉴权方案

  • Session + Cookie:通过服务器端存储会话信息,客户端通过cookie传递会话ID。
  • JWT(JSON Web Token):在客户端存储用户的身份信息,使用token进行认证和授权。

实战

  1. AJAX

    • XHR(XMLHttpRequest):用于在后台与服务器交换数据并更新网页部分内容。
    • Fetch:现代的XHR升级版,基于Promise,支持更简洁的API和更强的功能,如流式处理。
  2. 网络优化:通过减少请求数量、使用压缩、合并文件、延迟加载等手段提高页面加载速度。

  3. 稳定性:确保系统能够在不同的负载和故障条件下保持运行,通过负载均衡、冗余和监控等措施提高稳定性。

  4. QUIC:一种新型传输协议,结合了TCP的可靠性和TLS的加密,支持更快的连接建立和更高效的数据传输。

HTTP的场景实践

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值