HTTP小知识 | 青训营笔记

114 阅读4分钟

HTTP小知识 | 青训营笔记

这是我参与「第五届青训营 」伴学笔记创作活动的的第14天

HTTP (HyperText Transfer Protocol) 是一种通信协议,用于从Web服务器传输超文本到本地浏览器的标准。HTTP在前端开发中非常重要,因为它是Web应用程序的基础通信协议。

一、初识HTTP

当我们在从在浏览器地址栏输入url地址,再到最后看到渲染好的页面,这其中到底发生了什么?

image.png

【举手】我知道!我可是学过计网的(骄傲脸)

  1. 浏览器请求DNS服务器:浏览器通过DNS服务器解析URL中的域名到IP地址。
  2. 建立TCP连接:浏览器通过IP地址建立一个TCP连接,以向Web服务器发送HTTP请求。
  3. 发送HTTP请求:浏览器通过HTTP协议向Web服务器发送请求,请求包括请求方法、URL、请求头和请求体。
  4. 服务器响应请求:Web服务器接收到请求并通过HTTP协议向浏览器发送响应,响应包括响应代码、响应头和响应体。
  5. 浏览器渲染页面:浏览器根据响应体中的内容渲染页面,例如HTML、CSS和JavaScript。
  6. 页面加载完成:浏览器完成页面的渲染,最终呈现给用户一个完整的页面。

什么是HTTP

HTTP (HyperText Transfer Protocol) 是一种应用层协议,用于在Web浏览器和Web服务器之间传输数据。HTTP是通过TCP/IP协议进行通信的,并且是万维网(World Wide Web)的基础协议。

HTTP定义了如何发送请求和接收响应,以及如何描述Web页面的数据和内容。HTTP请求通常由浏览器发送,Web服务器进行响应。请求和响应通过网络传输,并遵循HTTP协议的格式和规则。

HTTP主要用于从Web服务器获取HTML页面,图像,视频等内容,并在浏览器中呈现这些内容。它也可以用于在Web服务器和Web浏览器之间发送和接收其他类型的数据,例如JSON或XML。

简而言之,HTTP是一种分布式系统(包括浏览器和Web服务器)之间进行数据通信的标准协议。

二、HTTP协议分析

image.png

报文分析

image.png

1. 请求方法method

方法名描述
GET请求一个指定资源的表示形式,使用GET请求应该只被用于获取数据
POST用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
PUT用请求有效载荷替换目标资源的所有当前表示
DELETE删除指定的资源
HEAD请求一个与GET请求的响应相同的响应,但没有响应体
CONNECT建立一个由目标资源标识的服务器的隧道
OPTIONS用于描述目标资源的通信选项
TRACE沿着到目标资源的路径执行一个消息环回测试
PATCH用于对资源应用部分修改

2. 状态码(常见)

image.png
  • 200 OK - 客户端请求成功
  • 301 - 资源(网页等)被永久转移到其他URL
  • 302 - 临时跳转
  • 401 Unauthorized - 请求未经授权
  • 404 - 请求资源不存在,可能是输入了错误的URL
  • 500 - 服务器内部发生了不可预期的错误
  • 504 Gateway TimeOut - 网关或者代理的服务器无法在规定的时间内获得想要的响应

3. RESTful API

RESTful API:一种API设计风格

image.png

4. 常用请求头

image.png

5. 常用响应头

image.png

6. 缓存

image.png 缓存使用流程:

image.png

7. cookie

Set-Cookie - response

image.png

发展

HTTP/2

HTTP/2:更快、更稳定、更简单

HTTP/2在传输数据方面的一些改进,如:

  • 多路复用:HTTP/2可以在一个TCP连接中并行请求多个资源,从而提高效率。

  • 服务器推送:HTTP/2允许服务器主动推送资源到客户端,而不需要等待客户端发起请求。

  • 二进制协议:HTTP/2使用二进制协议,而不是HTTP/1.x中的文本协议。

  • 压缩头字段:HTTP/2支持压缩请求和响应头字段,从而减小传输的数据大小。

image.png

特征:

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

HTTPS

HTTPS : Hypertext Transfer Protocol Secure 超文本传输安全协议。与HTTP不同,HTTPS通过使用加密技术来保护数据的完整性和私密性,防止数据在传输过程中被第三方窃取或篡改。

  • 经过TSL/SSL加密
  • 对称加密:加密和解密都是使用同一个密钥
  • 非对称加密:加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)

image.png