你了解 HTTP 报文吗?

2022-11-02 16:50:15 浏览数 (1)

HTTPHyper Text Transfer Protocol 简写,超文本传输协议。在前端最重要的体现在于,浏览器(HTTP Client)与服务器(HTTP Server)之间的通信。

HTTP 是前后端沟通的桥梁,了解 HTTP 协议及报文相当重要。

1. HTTP 报文

HTTP 由请求(Request)及响应(Response)构成。报文格式如下,请忽略注释内容。

代码语言:javascript复制
# 请求报文

# 首行由 Method Path Version 构成
# 每一行结尾是 rn
GET / HTTP/1.1
# 以下是请求头,Host 是请求的域名
Host: www.baidu.com
User-Agent: curl/7.79.1
Accept: */*

# 响应报文
# 相隔两个 rn,将会收到响应报文

# 首行由 Version StatusCode 状态描述符组成
HTTP/1.1 200 OK
# 以下是响应头
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 2443
Content-Type: text/html
Date: Wed, 31 Aug 2022 09:23:42 GMT
Etag: "58860402-98b"
Last-Modified: Mon, 23 Jan 2017 13:24:18 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/

# 响应体
# 相隔两个 rn,将会收到响应体
<!DOCTYPE html>
...

通过 curl -v https://www.baidu.com 可以获得完整的响应报文以及响应体。

2. HTTP Client/Server

HTTP 由请求以及响应组成,负责请求的被称为 HTTP Client,即 HTTP 客户端,而负责响应的被称为 HTTP Server,即HTTP 服务器端。

在后端中,他们的 nginx/django/express/koa 等,便是扮演 HTTP 服务器端的角色,「接收 HTTP 客户端的请求,分析路由、请求方法请求体,并返回对应的响应报文」

在前端中,浏览器便是扮演 HTTP 客户端的角色,从代码层面来说,我们使用的 fetch/axios 就是 HTTP 客户端,各种编程语言的请求库以及 curl 都可以视为 HTTP 客户端。

在前后端联调 API 时,团队经常使用的 API 管理工具,Apifox1 与 Postman2 也属于 HTTP 客户端。

在 Apifox1 中,可以通过导入 curl 生成各种语言请求库的请求。

3. 作业

  1. 什么是 rn
  2. 如何找到文件中的 rn
  3. HTTP 报文格式是什么样的
  4. 我们如何查看某此请求的 HTTP 报文

0 人点赞