前言:本篇文章主要参考自《图解HTTP》,在学习期间也查询过其他资料。仅作为个人的学习记录。

三.HTTP 报文信息

1.HTTP 报文结构

**用于 HTTP 协议交互的信息被称为 HTTP 报文.**请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文.HTTP 报文包本身是由多行(用 CR+LF 作换行符)(“回车”(CR,Carriage Return)和“换行”(LF,Line Feed))数据构成的字符串成文本.

HTTP 报文大致可分为报文首部和报文主体(body)两块.两者由最初出现的空行(CR + LF)来划分.

图: HTTP 报文的结构

  • **请求行(请求报文首行): **包含用于请求的方法,请求 URI 和 HTTP 版本
  • **状态行(响应报文首行): **包含标明响应结果的状态码,原因短语和 HTTP 版本
  • **首部字段: **包含表示请求和响应的各种条件和属性的各类首部

**一般有 4 种首部, 分别是: 通用首部、 请求首部、 响应首部和实体首部 **

以下以 https://www.bilibili.com 抓取的报文为例子

1).请求报文结构

2).响应报文结构

2.告知服务器意图的 HTTP 方法

1)GET: 表示从服务器获取资源

GET 请求的实体字段(报文实体)一般在 query string(查询字符串)里,此时最下面的报文主体(body)则为空.

像我们平常访问页面的时候,就是向服务器获取资源,也就是发送 GET 请求.得到 HTML 页面.

以下为两个 GET 请求的例子

顺便介绍下相关的首部字段:

①Host:

请求首部字段: 请求资源所在服务器

图: 虚拟主机运行在同一个 IP 上, 因此使用首部字段 Host 加以区分

首部字段 Host 会告知服务器, 请求的资源所处的互联网主机名和端
口号。(HTTP 默认端口为 80,HTTPS 默认端口号为 443) Host 首部字段在 HTTP/1.1 规范内是唯一一个必须被包含在请求内的首部字段

首部字段 Host 和以单台服务器分配多个域名的虚拟主机的工作机制有很密切的管理,这也是首部字段 Host 必须纯在的意义

请求被发送到服务器时,如果相同的 IP 地址下部署运行着多个域名,那么服务器就无法知晓究竟是哪个域名对应的请求.此时,使用 Host 首部字段来明确指出请求的主机名.未指定则默认为空

②If-Modified-Since

请求首部字段: 比较资源更新时间

**图: 如果在 If-Modified-Since 字段指定的日期时间后, 资源发生了更新, 服务器会接受请求 **

首部字段 If-Modified-Since, 属附带条件之一, 它会告知服务器若 IfModified-Since 字段值早于资源的更新时间, 则希望能处理该请求。而在指定 If-Modified-Since 字段值的日期时间之后, 如果请求的资源
都没有过更新, 则返回状态码 304 Not Modified 的响应。

2)POST: 表示往服务器发送一个资源

POST 方法用来传输实体的主体(body)

POST 请求报文的 query string 一般为空,其报文实体就是报文主体(body)

像是登录功能,就是一个 POST 请求

以下为 POST 的例子:

哔哩哔哩登录案例:

响应body:

{"code":0,"message":"0","ttl":1,"data":{"status":0,"message":"","url":"https://passport.biligame.com/crossDomain?DedeUserID=28970049&DedeUserID__ckMd5=0ee5803628e6e65f&Expires=1667303493&SESSDATA=35f5d9fc,1667303493,e6e01*51&bili_jct=ee6c28743e5d1149f60e24040403e9a5&gourl=https%3A%2F%2Fwww.bilibili.com%2F"}}
③Conneciton

通用首部字段: 逐跳首部、 连接的管理

具备两个作用:

  • 控制不再转发给代理的首部字段

Connetion: 不再转发的首部字段名

在客户端发送请求和服务器返回响应内, 使用 Connection 首部字段, 可控制不再转发给代理的首部字段(即 Hop-by-hop 首部)

  • 管理持久连接

Connection: close

HTTP/1.1 版本的默认连接都是持久连接(客户端会在持久连续上连续发送请求),当服务器端想明确断开连接时, 则指定 Connection 首部字段的值为 Close

Connection: Keep-Alive

HTTP/1.1 之前的 HTTP 版本的默认连接都是非持久连接。 为此, 如果想在旧版本的 HTTP 协议上维持持续连接, 则需要指定Connection 首部字段的值为 Keep-Alive。

④Upgrade

通用首部字段: 升级为其他协议

首部字段 Upgrade 用于检测 HTTP 协议及其他协议是否可使用更高的版本进行通信, 其参数值可以用来指定一个完全不同的通信协议。

上图用例中, 首部字段 Upgrade 指定的值为 TLS/1.0。 请注意此处两个字段首部字段的对应关系, Connection 的值被指定为 Upgrade。Upgrade 首部字段产生作用的 Upgrade 对象仅限于客户端和邻接服务器之间。 因此, 使用首部字段 Upgrade 时, 还需要额外指定Connection:Upgrade。

⑤Content-Length

实体首部字段: 实体主体的大小(单位: 字节)

Content-Length是实体首部字段

Content-Length: 15000

首部字段 Content-Length 表明了实体主体部分的大小(单位是字节)。

3)PUT

todo 其他方法暂且不论述.

使用方法下达命令

向请求 URI 指定的资源发送请求报文时, 采用称为方法的命令。

方法的作用在于, 可以指定请求的资源按期望产生某种行为。 方法中有 GET、 POST 和 HEAD 等。

下表列出了 HTTP/1.0 和 HTTP/1.1 支持的方法。 另外, 方法名区分大小写, 注意要用大写字母

其中,LINK 和 UNLINK 已被 HTTP/1.1 废弃, 不再支持。

总结:

HTTP 协议中的诸多方法之间(尤其是 GET 和 POST 之间),是没有本质的区别的.

  • GET 习惯把自定义数据放到 query string 中,POST 习惯把自定义数据放到 (报文主体)body 中
  • GET 一般用于"获取数据",POST 一般用于"提交数据"
  • GET 请求一般会设计成"幂等"的, POST 请求一般不要求设计成"幂等"
  • GET 请求一般会被缓存,POST 请求一般不被缓存

在实际开发中,经常会有关于"幂等"相关的探讨和要求

例如:

支付宝有一个关键功能,查看账户余额,这种"查看操作"本身就是幂等的
支付宝还有一个关键功能,转账,这种操作,如果不进行限制,就不是幂等的.

像这种转账操作,也是需要设计成幂等的,要避免因为一些网络原因导致服务器这边请求收到多次,从而让导致多次转账.

原本是数学上的概念,用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。

幂等性是分布式系统设计中十分重要的概念,具有这一性质的接口在设计时总是秉持这样的一种理念:调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。

3.返回结果的 HTTP 状态码

HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通过出现的错误等工作.

状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误.

图: 响应的状态码可描述请求的处理结果

状态码的类别:

接下来介绍一下常用的状态码:

1)2XX

200 OK

表示从客户端发来的请求在服务器端被正常处理了.

204 No Content

该状态码代表服务器接收的请求已成功处理, 但在返回的响应报文中不含实体的主体部分(报文主体为空)。 另外, 也不允许返回任何实体的主体。 比如,当从浏览器发出请求处理后, 返回 204 响应, 那么浏览器显示的页面不发生更新。

一般在只需要从客户端往服务器发送信息, 而对客户端不需要发送新信息内容的情况下使用

**206 Partial Content **

该状态码表示客户端进行了范围请求, 而服务器成功执行了这部分的GET 请求。 响应报文中包含由 Content-Range 指定范围的实体内容。

2)3XX 重定向

3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。

301 Moved(移动到) Permanently(永久的)

**永久重定向.**该状态码表示请求的资源已被分配了新的 URI, 以后应使用资源现在所指的 URI。 也就是说, 如果已经把资源对应的 URI保存为书签了, 这时应该按 Location 首部字段提示的 URI 重新保存。

像下方给出的请求 URI, 当指定资源路径的最后忘记添加斜杠“/”, 就会产生 301 状态码。

http://example.com/sample

302 Found(常见)

临时性重定向。 该状态码表示请求的资源已被分配了新的 URI, 希望用户(本次) 能使用新的 URI 访问。

和 301 Moved Permanently 状态码相似, 但 302 状态码代表的资源不是被永久移动, 只是临时性质的。 换句话说, 已移动的资源对应的URI 将来还有可能发生改变。 比如, 用户把 URI 保存成书签, 但不会像 301 状态码出现时那样去更新书签, 而是仍旧保留返回 302 状态码的页面对应的 URI。

例如: 在 Gitee 上访问一个公开的项目

https://gitee.com/yao-changyu/java-web/commit/8771ca2f2f1c2ac1816fc3148351001fc9f373f2

此时虽然不会报 403 ,但 gitee 要求你先登录在访问.就会重定向至管理页面

响应报文:

HTTP/1.1 302 Found
...
Location: https://gitee.com/login?redirect_to_url=%2Fyao-changyu%2Fjava-web%2Fcommit%2Fb93d61e15d6fbcdd56e7da245c6b0b2723daa370
...此处为body

登录后,再次重定向至原来的页面

响应报文:

HTTP/1.1 302 Found
Location: https://gitee.com/yao-changyu/java-web/commit/b93d61e15d6fbcdd56e7da245c6b0b2723daa370
...此处为body
⑥Location

响应首部字段: 令客户端重定向至指定URI

在响应报文中,当触发 302 等重定向后,就会在响应报文加上这么一个首部字段,来告知重定向到何处.

Location: http://www.usagidesign.jp/sample.html

使用首部字段 Location 可以将响应接收方引导至某个与请求 URI 位置不同的资源。

基本上, 该字段会配合 3xx : Redirection 的响应, 提供重定向的URI。

几乎所有的浏览器在接收到包含首部字段 Location 的响应后, 都会强制性地尝试对已提示的重定向资源的访问。

303 See Other

该状态码表示由于请求对应的资源存在着另一个 URI, 应使用 GET方法定向获取请求的资源。

303 状态码和 302 Found 状态码有着相同的功能, 但 303 状态码明确表示客户端应当采用 GET 方法获取资源, 这点与 302 状态码有区别

比如, 当使用 POST 方法访问 CGI 程序, 其执行后的处理结果是希望客户端能以 GET 方法重定向到另一个 URI 上去时, 返回 303状态码。 虽然 302 Found 状态码也可以实现相同的功能, 但这里使用 303状态码是最理想的。

当 301、 302、 303 响应状态码返回时, 几乎所有的浏览器都会把POST 改成 GET, 并删除请求报文内的主体, 之后请求会自动再次发送。

301、 302 标准是禁止将 POST 方法改变成 GET 方法的, 但实际使用时大家都会这么做

304 Not Modified

该状态码表示客户端发送附带条件的请求 2 时, 服务器端允许请求访问资源, 但未满足条件的情况。 304 状态码返回时, 不包含任何响应的主体部分。 304 虽然被划分在 3XX 类别中, 但是和重定向没有关系。

307 Temporary Redirect

临时重定向。 该状态码与 302 Found 有着相同的含义。 尽管 302 标准禁止 POST 变换成 GET, 但实际使用时大家并不遵守。

307 会遵照浏览器标准, 不会从 POST 变成 GET。 但是, 对于处理响应时的行为, 每种浏览器有可能出现不同的情况。

3)4XX 客户端错误

4XX 的响应结果表明客户端是发生错误的原因所在。

400 Bad Request

该状态码表示请求报文中存在语法错误。 当错误发生时, 需修改请求的内容后再次发送请求。 另外, 浏览器会像 200 OK 一样对待该状态码。

401 Unauthorized(未经授权的)

该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证) 的认证信息。 另外若之前已进行过 1 次请求, 则表示用 户认证失败。
返回含有 401 的响应必须包含一个适用于被请求资源的 WWWAuthenticate 首部用以质询(challenge) 用户信息。 当浏览器初次接收到 401 响应, 会弹出认证用的对话窗口。

像是 CSDN 内容管理页中编辑一个文章,如果你是未登录过的,去通过 url 进行访问的话,就会返回一个 401

https://editor.csdn.net/md/?articleId=124452226

返回响应报文:

未登录访问 gitee:

HTTP/1.1 401 Unauthorized
Date: Fri, 06 May 2022 17:28:56 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Server: nginx
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: chrome=1
Expires: Sun, 1 Jan 2000 01:00:00 GMT
Pragma: must-revalidate, no-cache, private
Cache-Control: no-cache
Set-Cookie: oschina_new_user=false; path=/; expires=Tue, 06 May 2042 17:28:56 -0000
Set-Cookie: gitee-session-n=YVZabTdtNmJMMFlneFNpUkpoUUorYXdMVWZ0UGVCNFhHZWpLdjJSckdBTTMrajlLMDc5RHlGZmxzb3JnZGY5WStxN24yTmdTMG95ZFdyQ2toZnFFOGdScEFyZC9aanY4a0RJRzUrdE15NWZ2dUNZRUtiMXpkV1JUSDk5Tzh6M3RYZTQxZzN5QU00K24vRFRSUGJLeWJKY0NLcDBwMS9KbjZoUlRtWHVHMEQ1L3owVXhhTllnU0JqUjNVS2NBSmJlOXRUSzhoUWNXd052NDZSUUtpdW1pZEJaNlp0Tk1nN0RNb1U0UlRxYXNDK1lXN0U3WFNWUGJOaGdHbFRzVmNBZmRiOW92NjUyQlRnQmx1cDQvbDFzZG9uSUlhRnBENk9HSVJLSWR0b2dRVUVPV0NCOW1mMXZMUVFKUFpoRlBCOEItLWtjU1BmYWhYUHR0TkNSZ29kdEJ3Rnc9PQ%3D%3D--8619617934101da9f70aee7e04973be6c296edb6; domain=.gitee.com; path=/; HttpOnly
X-Request-Id: 37d4abe985fc4c8ba4428ffcc3796017
X-Runtime: 0.014351
Vary: Origin
X-Frame-Options: SAMEORIGIN
Content-Length: 75{"status":401,"data":null,"message":"继续操作前请注册或者登录"}

403 Forbidden( 不允许的,被禁止的)

该状态码表明对请求资源的访问被服务器拒绝了。 服务器端没有必要给出拒绝的详细理由, 但如果想作说明的话, 可以在实体的主体部分对原因进行描述, 这样就能让用户看到了。
未获得文件系统的访问授权, 访问权限出现某些问题(从未授权的发送源 IP 地址试图访问) 等列举的情况都可能是发生 403 的原因。

这是我的一个 gitee 上的私有仓库地址,如果非本人访问,就会返回一个 403

https://gitee.com/yao-changyu/java-data-structure/commit/7f30fb925d949e9adff4e16a3344256faed6a20d

响应首行:

HTTP/1.1 403 Forbidden

404 Not Found

该状态码表明服务器上无法找到请求的资源。 除此之外, 也可以在服务器端拒绝请求且不想说明理由时使用

4)5XX 服务器错误

5XX 的响应结果表明服务器本身发生错误。

500 Internal Server Error

该状态码表明服务器端在执行请求时发生了错误。 也有可能是 Web 应用存在的 bug 或某些临时的故障。

**503 Service Unavailable **

该状态码表明服务器暂时处于超负载或正在进行停机维护, 现在无法处理请求。 如果事先得知解除以上状况需要的时间, 最好写入RetryAfter 首部字段再返回给客户端。

4.body 中常见的数据格式

1)报文主体和实体主体的差异 TODO

通常情况下,报文主体就等于实体主体.

之前我们已经了解过报文的基本结构了,空行下面就是报文主体(body).这个报文主体可以为空.

实体主体具体在哪?请求报文看请求的方法是啥:GET 方法的实体主体则是在 query string 中,而 body 为空;POST 请求,实体主体就在 body 中.响应报文则一般实体主体在报文主体(body)中

  • 报文( message)
    是 HTTP 通信中的基本单位, 由 8 位组字节流(octet sequence,其中 octet 为 8 个比特) 组成, 通过 HTTP 通信传输。实体( entity)

  • 实体( entity)

    作为请求或响应的有效载荷数据(补充项) 被传输, 其内容由实体首部和实体主体组成

2)body 中的数据格式

报文实体里的数据内容是支持很多种格式的

⑦Content-Type

实体首部字段: 实体主体的媒体类型

Content-Type 说明实体主体内对象的媒体类型(表示实体主体传输的是何种数据),和首部字段 Accept 一样,字段值用 type/subtype 形式进行赋值

参数 charset 使用 iso-8859-1 或 euc-jp 等字符集进行赋值。

常见的媒体格式类型如下:

  • text/html : HTML格式
  • text/plain :纯文本格式
  • text/xml : XML格式
  • image/gif :gif图片格式
  • image/jpeg :jpg图片格式
  • image/png:png图片格式

以application开头的媒体格式类型:

  • application/xhtml+xml :XHTML格式
  • application/xml: XML数据格式
  • application/atom+xml :Atom XML聚合格式
  • application/json: JSON数据格式
  • application/pdf:pdf格式
  • application/msword : Word文档格式
  • application/octet-stream : 二进制流数据(如常见的文件下载)
  • application/x-www-form-urlencoded : <form encType=“”>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

另外一种常见的媒体格式是上传文件之时使用的:

  • multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

3)请求正文(body)中的数据格式

form 表单提交的数据格式 --> application./x-www-form-urlencoded

Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Content-Type: application/json;charset=utf-8

例: 抓取码云 Gitee 上传头像请求

POST https://gitee.com/profile/upload_portrait_with_base64 HTTP/1.1
Host: gitee.com
Connection: keep-alive
Content-Length: 107389
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
Accept: */*
X-CSRF-Token: 6ROfZGr4Y7Qx8td1TuKCnrG8gbODLCSUqUBZSw2b+ac=
X-Requested-With: XMLHttpRequest
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/91.0.4472.101 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: https://gitee.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://gitee.com/HGtz2222
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: oschina_new_user=false; user_locale=zh-CN; yp_riddler_id=1ce4a551-a160-
4358-aa73-472762c79dc0; visit-gitee--2021-05-06%2010%3A12%3A24%20%2B0800=1;
sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%22726826%22%2C%22first_id%22%3
A%22175869ba5888b6-0ea2311dc53295-303464-2073600-
175869ba5899ac%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E
7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%
9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%2
4latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%22175869ba5888b6-
0ea2311dc53295-303464-2073600-175869ba5899ac%22%7D; remote_way=svn;
tz=Asia%2FShanghai;
Hm_lvt_24f17767262929947cc3631f99bfd274=1622637014,1622712683,1622863899,1623298
442; gitee_user=true; Hm_lpvt_24f17767262929947cc3631f99bfd274=1623298560;
gitee-sessionn=c0hXQ0I5SjR1bWg5M01IR3RYS3hLT0RhelN1aFVuMExKdEdSSmRaQWIwRy9QWFUwV0thdzV1alIzYj
RaOU9ZeDdkZEJZK2RtTVRNeTNFRHNYVW9ha2hEcWJyclIwS1NVRG1EL0xxTmJXSGxvSzh3c28zOHBia1
pIOFQrU3RYeWE0bE13S09DTm5MZWZ5WW5WUVFpSzFiMGFWbHRDQ0xRakc1Um5yY21HQllqeUpNLzBvZF
gxbHVhN09uK2h1VVVmRHZkS3BmVGEwcDhyNjJVb1p0RFRLY0VOem5vNEEvd0FuYzJJYlhZcGlyenZQc3
dSbXBNUWI3UUwrRDBrV2N0UHZRdjFBUXF5b0Y0L1Vrd09pQVBKNkdjZmY5cHlDTCtMWG4ya0tIaW5LcE
tBTkw4cGFGVjhUQ0djMWhkOXI0bUFteUY4VW80RHl2T2Q2YmxwR1d3M3Rad1RhZWhhdnNiTTNrcE1RV2
NyZ1dYeDRoR0dpanh4bERNMTBuenB1NkgxLS16QUdJS3NlZG9mTVBtYlVlREppck1BPT0%3D-
-898d1284181ca494918d29ac44f9a3a79d448a9bavatar=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAPgAAAD4CAYAAADB0Ss
LAAAg......

例2: 抓取 bilibili 登录(POST)请求

POST https://passport.bilibili.com/x/passport-login/web/login HTTP/1.1
Host: passport.bilibili.com
Connection: keep-alive
Content-Length: 451
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="101", "Google Chrome";v="101"
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
sec-ch-ua-platform: "Windows"
Origin: https://www.bilibili.com
Sec-Fetch-Site: same-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://www.bilibili.com/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: buvid3=D4F7F139-7F0D-EF5E-0ADE-27352644396035513infoc; _uuid=B988867C-E2A5-3F68-8FB4-CF931085E824335036infoc; i-wanna-go-back=-1; blackside_state=1; rpdid=|(ku|Ju~)Ruk0J'uYRuJmJYkR; LIVE_BUVID=AUTO5616414669161256; fingerprint_s=8729709f75525f32cf01541b6e70e97c; buvid4=F465F6FE-49D4-8F13-3369-A07C166D457391997-022012116-c8mC4VtaIp+tDg3f+Acmkw%3D%3D; fingerprint3=b9b9e1bf1df93e90008f9b03a82de236; CURRENT_BLACKGAP=0; nostalgia_conf=-1; hit-dyn-v2=1; buvid_fp_plain=undefined; bp_article_offset_28970049=655272719312486400; CURRENT_QUALITY=80; bsource=share_source_qqchat; fingerprint=7f8d85a206c3c6de678b3de7e4de1f45; sid=itqfsabw; PVID=7; b_lsid=F310FE102B_180A40E4712; innersign=0; CURRENT_FNVAL=80; bp_video_offset_28970049=657910825665691600; b_ut=7; buvid_fp=D4F7F139-7F0D-EF5E-0ADE-27352644396035513infocusername=15207535664&password=TiRa4AliWX9ZapBN%2BK4Sv26q0%2FUfI9sHdQjoAllMnzYTN9axeSjAan%2BIYXkyVfmWLgJQ23nlWKEFLoCMnthUtC9Drq495It6JMptljjT61mp7qVBVc5T8I9XNFk2FADYF4IbqA6b6x4pNTOynLmJBOkH4ph%2F9LMsmmGshVnIiK8%3D&keep=0&source=main_mini&token=7bac7c953bbc4a4db436b0118d54678e&go_url=https%3A%2F%2Fwww.bilibili.com%2F&challenge=d5d4fc8e878ffc58e0109d7a8f5ede51&validate=9a4ed629ace12abd8cbf38c7a38b562e&seccode=9a4ed629ace12abd8cbf38c7a38b562e%7Cjordan

其中,账号部分被我手动改过,而密码则是被进行加密了

multipart/form-data 用于上传文件

例: bilibili上传头像

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryN3Ox30X04kauHEc7

boundary 表示"边界",要上传的数据,从哪里开始,到哪里结束

POST https://api.bilibili.com/x/member/web/face/update?csrf=13abb9e3ae8e3da79ba35859c1d91b88 HTTP/1.1
Host: api.bilibili.com
Connection: keep-alive
Content-Length: 1364414
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="101", "Google Chrome";v="101"
Accept: application/json, text/plain, */*
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryN3Ox30X04kauHEc7
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
sec-ch-ua-platform: "Windows"
Origin: https://account.bilibili.com
Sec-Fetch-Site: same-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://account.bilibili.com/account/face/upload?spm_id_from=333.999.0.0
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: buvid3=D4F7F139-7F0D-EF5E-0ADE-27352644396035513infoc; _uuid=B988867C-E2A5-3F68-8FB4-CF931085E824335036infoc; i-wanna-go-back=-1; blackside_state=1; rpdid=|(ku|Ju~)Ruk0J'uYRuJmJYkR; LIVE_BUVID=AUTO5616414669161256; fingerprint_s=8729709f75525f32cf01541b6e70e97c; buvid4=F465F6FE-49D4-8F13-3369-A07C166D457391997-022012116-c8mC4VtaIp+tDg3f+Acmkw%3D%3D; fingerprint3=b9b9e1bf1df93e90008f9b03a82de236; CURRENT_BLACKGAP=0; nostalgia_conf=-1; hit-dyn-v2=1; buvid_fp_plain=undefined; bp_article_offset_28970049=655272719312486400; CURRENT_QUALITY=80; bsource=share_source_qqchat; fingerprint=7f8d85a206c3c6de678b3de7e4de1f45; SESSDATA=2d3cbc72%2C1667544531%2Cb297f%2A51; bili_jct=13abb9e3ae8e3da79ba35859c1d91b88; DedeUserID=28970049; DedeUserID__ckMd5=0ee5803628e6e65f; sid=itqfsabw; buvid_fp=7f8d85a206c3c6de678b3de7e4de1f45; b_ut=5; bp_video_offset_28970049=657888010771103700; PVID=7; innersign=1; CURRENT_FNVAL=4048; b_lsid=9F4C59BD_180A40D83BF------WebKitFormBoundaryN3Ox30X04kauHEc7
Content-Disposition: form-data; name="dopost"save
------WebKitFormBoundaryN3Ox30X04kauHEc7
Content-Disposition: form-data; name="DisplayRank"10000
------WebKitFormBoundaryN3Ox30X04kauHEc7
Content-Disposition: form-data; name="face"; filename="blob"
Content-Type: image/jpeg......

application/json

例: 力扣提交题目

POST https://leetcode-cn.com/problems/actors-and-directors-who-cooperated-at-least-three-times/submit/ HTTP/1.1
Host: leetcode-cn.com
Connection: keep-alive
Content-Length: 302
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="101", "Google Chrome";v="101"
Accept: application/json, text/plain, */*
X-CSRFToken: G4JrAJsBliC7Jz8lwruFgwdpQzG3olnuzEfVRZ5fOMq9AsGDEJUT7l13GwBn8jio
sec-ch-ua-mobile: ?0
Content-Type: application/json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
sec-ch-ua-platform: "Windows"
Origin: https://leetcode-cn.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://leetcode-cn.com/problems/actors-and-directors-who-cooperated-at-least-three-times/submissions/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: csrftoken=G4JrAJsBliC7Jz8lwruFgwdpQzG3olnuzEfVRZ5fOMq9AsGDEJUT7l13GwBn8jio; __auc=1f2ecb4917e621ebfcbd1790f66; gr_user_id=73cb7305-2032-40ed-8784-809511311be2; _bl_uid=b7kbqy36h701264nIhhjy1moCvXC; a2873925c34ecbd2_gr_last_sent_cs1=yao-zhu-chang-yu-r; _gid=GA1.2.1969535584.1651803280; aliyungf_tc=1af52f41754c51ec9f7e8f05dd8b40d41a2ca6ec5a8aa97885eb3d8c164f7e95; Hm_lvt_fa218a3ff7179639febdb15e372f411c=1651242818,1651409801,1651803274,1651908982; NEW_PROBLEMLIST_PAGE=1; a2873925c34ecbd2_gr_session_id=b8c9c653-14f5-4e63-8cae-05f28507185b; a2873925c34ecbd2_gr_last_sent_sid_with_cs1=b8c9c653-14f5-4e63-8cae-05f28507185b; a2873925c34ecbd2_gr_session_id_b8c9c653-14f5-4e63-8cae-05f28507185b=true; LEETCODE_SESSION=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZXh0X2FmdGVyX29hdXRoIjoiL3Byb2JsZW1zL3JhbmdlLXN1bS1xdWVyeS0yZC1pbW11dGFibGUvc3VibWlzc2lvbnMvIiwiX2F1dGhfdXNlcl9pZCI6IjMzMTUzNTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaGFzaCI6Ijk0OGI0Y2E3OGVkMjQzOTVjZGIzMDllMzQwNWI1NGUyNmMzNTdhNjVlOWRiNzAyNjYxZmY3YjZkMjY3YjFjYjUiLCJpZCI6MzMxNTM1NSwiZW1haWwiOiIiLCJ1c2VybmFtZSI6Inlhby16aHUtY2hhbmcteXUtciIsInVzZXJfc2x1ZyI6Inlhby16aHUtY2hhbmcteXUtciIsImF2YXRhciI6Imh0dHBzOi8vYXNzZXRzLmxlZXRjb2RlLWNuLmNvbS9hbGl5dW4tbGMtdXBsb2FkL3VzZXJzL3lhby16aHUtY2hhbmcteXUtci9hdmF0YXJfMTYyMjg5Nzg0MC5wbmciLCJwaG9uZV92ZXJpZmllZCI6dHJ1ZSwiX3RpbWVzdGFtcCI6MTY1MTQxMDQyMy40MDkzNDEsImV4cGlyZWRfdGltZV8iOjE2NTM5MzcyMDAsInZlcnNpb25fa2V5XyI6MCwibGF0ZXN0X3RpbWVzdGFtcF8iOjE2NTIwMjA4NTJ9.ev6pUFG8ef224UgkREo3rR4gBwMDfUaxdmvtQ_J-5Kg; Hm_lpvt_fa218a3ff7179639febdb15e372f411c=1652020937; _ga=GA1.1.71517770.1642323694; _ga_RN3J7V8VS5=GS1.1.1652018976.48.1.1652020944.0; a2873925c34ecbd2_gr_cs1=yao-zhu-chang-yu-r{"question_id":"1136","lang":"mysql","typed_code":"# Write your MySQL query statement below\r\nselect actor_id,director_id from ActorDirector group by actor_id,director_id having count(*)>=3;","test_mode":false,"test_judger":"","questionSlug":"actors-and-directors-who-cooperated-at-least-three-times"}

4)响应正文(body)中的数据格式

通常,在我们提交一个 GET 请求,会返回 html,css,js 数据

**text/html : body 数据格式是 HTML **

例: 获取bilibli 主站的响应报文

HTTP/1.1 200 OK
Date: Sun, 08 May 2022 16:31:05 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
support: nantianmen
Set-Cookie: innersign=0; path=/; domain=.bilibili.com
Set-Cookie: i-wanna-go-back=-1; path=/; expires=Mon, 08 May 2023 16:31:05 GMT; domain=.bilibili.com
Set-Cookie: b_ut=5; path=/; expires=Mon, 08 May 2023 16:31:05 GMT; domain=.bilibili.com
Vary: Origin,Accept-Encoding
Content-Encoding: gzip
Expires: Sun, 08 May 2022 16:31:04 GMT
Cache-Control: no-cache
X-Cache-Webcdn: MISS from blzone08
X-Cache-Time: 0
X-Save-Date: Sun, 08 May 2022 16:31:05 GMT<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8" /><title>哔哩哔哩 (゜-゜)つロ 干杯~-bilibili</title><metaname="description"content="bilibili是国内知名的视频弹幕网站,这里有及时的动漫新番,活跃的ACG氛围,有创意的Up主。大家可以在这里找到许多欢乐。"/><metaname="keywords"content="Bilibili,哔哩哔哩,哔哩哔哩动画,哔哩哔哩弹幕网,弹幕视频,B站,弹幕,字幕,AMV,MAD,MTV,ANIME,动漫,动漫音乐,游戏,游戏解说,二次元,游戏视频,ACG,galgame,动画,番组,新番,初音,洛天依,vocaloid,日本动漫,国产动漫,手机游戏,网络游戏,电子竞技,ACG燃曲,ACG神曲,追新番,新番动漫,新番吐槽,巡音,镜音双子,千本樱,初音MIKU,舞蹈MMD,MIKUMIKUDANCE,洛天依原创曲,洛天依翻唱曲,洛天依投食歌,洛天依MMD,vocaloid家族,OST,BGM,动漫歌曲,日本动漫音乐,宫崎骏动漫音乐,动漫音乐推荐,燃系mad,治愈系mad,MAD MOVIE,MAD高燃"/><meta name="renderer" content="webkit" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="spm_prefix" content="333.1007" /><meta name="referrer" content="no-referrer-when-downgrade" />
.......HTML 数据

text/css : body 数据格式是 CSS

通过 ctrl + f5 强制刷新,再抓包

HTTP/1.1 200 OK
Server: Tengine
Content-Type: text/css
Content-Length: 2678
Connection: keep-alive
Date: Tue, 28 Sep 2021 06:47:50 GMT
Cache-Control: max-age=31536000
Expires: Tue, 27 Sep 2022 11:17:46 GMT
Last-Modified: Fri, 24 Sep 2021 08:18:45 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin,No-Cache,X-Requested-With,If-Modified-Since,Pragma,Last-Modified,Cache-Control,Expires,Content-Type,Access-Control-Allow-Credentials,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Cache-Webcdn
Vary: Origin,Accept-Encoding
Access-Control-Expose-Headers: Content-Length,X-Cache-Webcdn
X-Hash: /bfs/static/jinkela/long/laputa-css/light.css
Ali-Swift-Global-Savetime: 1632811670
Via: cache31.l2cn1802[0,0,200-0,H], cache46.l2cn1802[1,0], vcache15.cn4597[0,0,200-0,H], vcache5.cn4597[1,0]
Age: 19216336
X-Cache: HIT TCP_MEM_HIT dirn:10:724867678
X-Swift-SaveTime: Sat, 30 Apr 2022 22:19:06 GMT
X-Swift-CacheTime: 12990524
Cross-Origin-Resource-Policy: cross-origin
X-Cache-Webcdn: AL
Timing-Allow-Origin: *
EagleId: 3b24d61916520280066685938e:root{--Ga0:#F6F7F8;--Ga0_s:#F6F7F8;--Ga0_t:#F6F7F8;--Ga1:#F1F2F3;--Ga1_s:#F1F2F3;--Ga1_t:#F1F2F3;--Ga1_e:#F1F2F3;--Ga2:#E3E5E7;--Ga2_t:#E3E5E7;--Ga3:#C9CCD0;--Ga3_t:#C9CCD0;--Ga4:#AEB3B9;--Ga4_t:#AEB3B9;--Ga5:#9499A0;--Ga5_t:#9499A0;--Ga6:#797F87;--Ga6_t:#797F87;--Ga7:#61666D;--Ga7_t:#61666D;--Ga8:#484C53;--Ga8_t:#484C53;--Ga9:#2F3238;--Ga9_t:#2F3238;--Ga10:#18191C;--Ga10_t:#18191C;--Ga11:#FFFFFF;--Ga12:#F1F2F3;--Wh0:#FFFFFF;--Wh0_t:#FFFFFF;--Ba0:#000000;--Ba0_s:#000000;--Ba0_t:#000000;--Pi0:#FFF3F6;--Pi1:#FFECF1;--Pi2:#FFD9E4;--Pi3:#FFB3CA;--Pi4:#FF8CB0;--Pi5:#FF6699;--Pi5_t:#FF6699;--Pi6:#E84B85;--Pi7:#D03171;--Pi8:#AD1C5B;--Pi9:#771141;--Pi10:#3F0723;--Ma0:#FEF3FC;--Ma1:#FDEBFA;--Ma2:#FBD7F4;--Ma3:#F7AEEB;--Ma4:#F286E2;--Ma5:#EE5DDB;--Ma6:#DA41CB;--Ma7:#C525BA;--Ma8:#9B1797;--Ma9:#670F67;--Ma10:#330834;--Re0:#FEF3F2;--Re1:#FEECEA;--Re2:#FDD7D4;--Re3:#FCAFAA;--Re4:#FA857F;--Re5:#F85A54;--Re6:#E23D3D;--Re7:#C9272C;--Re8:#9F1922;--Re9:#710E18;--Re10:#3B060D;--Or0:#FFF6EE;--Or1:#FFF0E3;--Or2:#FFE1C7;--Or3:#FFC18F;--Or4:#FFA058;--Or5:#FF7F24;--Or6:#E95B03;--Or7:#BB4100;--Or8:#8D2D00;--Or9:#5E1B00;--Or10:#2F0C00;--Ye0:#FFFAEF;--Ye1:#FFF6E4;--Ye2:#FFEEC9;--Ye3:#FFDB93;--Ye4:#FFC65D;--Ye5:#FFB027;--Ye6:#E58900;--Ye7:#B76800;--Ye8:#8A4A00;--Ye9:#5B2E00;--Ye10:#2F1600;--Ly0:#FFFCEC;--Ly1:#FFFADF;--Ly2:#FFF5BF;--Ly3:#FFEA80;--Ly4:#FFDC40;--Ly5:#FFCC00;--Ly6:#D5A300;--Ly7:#AA7D00;--Ly8:#805A00;--Ly9:#553900;--Ly10:#2B1B00;--Lg0:#F7FBEF;--Lg1:#F2F9E4;--Lg2:#E3F2C8;--Lg3:#C7E691;--Lg4:#A9D95B;--Lg5:#88CC24;--Lg6:#66B105;--Lg7:#4E8E04;--Lg8:#376A03;--Lg9:#224702;--Lg10:#102301;--Gr0:#EFFBF3;--Gr1:#E4F8EA;--Gr2:#CAF1D6;--Gr3:#95E4AF;--Gr4:#5FD689;--Gr5:#2AC864;--Gr6:#0EB350;--Gr7:#089043;--Gr8:#046E35;--Gr9:#034926;--Gr10:#012414;--Cy0:#EDFBFB;--Cy1:#E2F8F8;--Cy2:#C4EFF0;--Cy3:#89E1E1;--Cy4:#4FD3D1;--Cy5:#14C4BF;--Cy6:#02AAAA;--Cy7:#018488;--Cy8:#015F66;--Cy9:#013D44;--Cy10:#001D22;--Lb0:#ECFAFE;--Lb1:#DFF6FD;--Lb2:#BFEDFA;--Lb3:#80DAF6;--Lb4:#40C5F1;--Lb5:#00AEEC;--Lb6:#008AC5;--Lb7:#00699D;--Lb8:#004B76;--Lb9:#002F4F;--Lb10:#001627;--Bl0:#F3F5FF;--Bl1:#EBEFFF;--Bl2:#D7DFFF;--Bl3:#B0C1FF;--Bl4:#88A4FF;--Bl5:#6188FF;--Bl6:#4C6DE4;--Bl7:#3752C8;--Bl8:#2136AC;--Bl9:#121F7F;--Bl10:#080D41;--Pu0:#F9F4FF;--Pu1:#F6EDFF;--Pu2:#EDDBFF;--Pu3:#D8B6FF;--Pu4:#C392FF;--Pu5:#AC6DFF;--Pu6:#8F56E4;--Pu7:#723ECC;--Pu8:#5627B3;--Pu9:#371683;--Pu10:#190A44;--Br0:#FAF8F6;--Br1:#F7F3F0;--Br2:#EFE7E0;--Br3:#E0CFC1;--Br4:#D0B7A3;--Br5:#C19D84;--Br6:#A5816A;--Br7:#856553;--Br8:#634A3E;--Br9:#423029;--Br10:#211815;--Si0:#F9FBFC;--Si1:#F5F7FA;--Si2:#EBEFF4;--Si3:#D7E0EA;--Si4:#C3D0DF;--Si5:#AFC0D5;--Si6:#8D9FB9;--Si7:#6D7F9C;--Si8:#4D5D7C;--Si9:#323D54;--Si10:#191E2B}

application/javascript : body 数据格式是 JavaScript

HTTP/1.1 200 OK
Date: Sun, 08 May 2022 16:31:05 GMT
Content-Type: application/javascript
Connection: keep-alive
Server: openresty
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin,No-Cache,X-Requested-With,If-Modified-Since,Pragma,Last-Modified,Cache-Control,Expires,Content-Type,Access-Control-Allow-Credentials,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Cache-Webcdn
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Expose-Headers: Content-Length,X-Cache-Webcdn
Age: 3068043
Cache-Control: max-age=600
Code: 200
Content-Md5: dKi1mqEGEBifQnet+s100w==
Expires: Sat, 26 Mar 2022 19:09:20 GMT
Last-Modified: Thu, 24 Mar 2022 08:41:36 GMT
X-Amz-Request-Id: 1648292360422282138
X-Amz-Version-Id: v1.0.0
X-CCDN-CacheTTL: 31536000
X-Hash: /bfs/seed/log/report/log-reporter.js
nginx-hit: 1
nginx-vary: Origin,Accept-Encoding
via: CHN-GDhuizhou-CT5-CACHE20[3],CHN-GDhuizhou-CT5-CACHE53[0,TCP_HIT,0],CHN-HNchangsha-GLOBAL1-CACHE94[3],CHN-HNchangsha-GLOBAL1-CACHE110[0,TCP_HIT,2],CHN-JSwuxi-GLOBAL2-CACHE3[7],CHN-JSwuxi-GLOBAL2-CACHE110[0,TCP_HIT,4]
x-hcs-proxy-type: 1
Vary: Origin,Accept-Encoding
Access-Control-Allow-Origin: *
X-Cache-Webcdn: HW
Cross-Origin-Resource-Policy: cross-origin
Content-Length: 101660window.webpackLogReporter=function(s){function e(e){for(var t,n,r=e[0],o=e[1],i=0,a=[];i<r.length;i++)n=r[i],Object.prototype.hasOwnProperty.call(u,n)&&u[n]&&a.push(u[n][0]),u[n]=0;for(t in o)Object.prototype.hasOwnProperty.call(o,t)&&(s[t]=o[t]);for(l&&l(e);a.length;)a.shift()()}var n={},u={0:0};function c(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return s[e].call(t.exports,t,t.exports,c),t.l=!0,t.exports}c.e=function(r){var o,i,e,a,t,n=[],s=u[r];return 0!==s&&(s?n.push(s[2]):(t=new Promise(function(e,t){s=u[r]=[e,t]}),n.push(s[2]=t),(o=document.createElement("script")).charset="utf-8",o.timeout=120,c.nc&&o.setAttribute("nonce",c.nc),o.src=c.p+""+({}[t=r]||t)+"."+{1:"612bb",2:"dce30",3:"7e97d",4:"f45be",5:"3017e",6:"605ab",7:"f6e79"}[t]+".function.chunk.js",0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),i=new Error,e=function(e){o.οnerrοr=o.οnlοad=null,clearTimeout(a);var t,n=u[r];0!==n&&(n&&(t=e&&("load"===e.type?"missing":e.type),e=e&&e.target&&e.target.src,i.message="Loading chunk "
...这 body 是 JavaScript 的数据,由于过多,不全部展示

**application/json : body 数据格式是 JSON **

例: bilibili登录的响应报文

HTTP/1.1 200 OK
Date: Sun, 08 May 2022 14:33:51 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 310
Connection: keep-alive
Bili-Status-Code: 0
Bili-Trace-Id: 03f0414b1c6277d4
Set-Cookie: SESSDATA=e9dcd5aa%2C1667572431%2Cb225f%2A51; Path=/; Domain=bilibili.com; Expires=Fri, 04 Nov 2022 14:33:51 GMT; HttpOnly
Set-Cookie: bili_jct=25c49bf8cd149e59dcb85d1958e658d6; Path=/; Domain=bilibili.com; Expires=Fri, 04 Nov 2022 14:33:51 GMT
Set-Cookie: DedeUserID=28970049; Path=/; Domain=bilibili.com; Expires=Fri, 04 Nov 2022 14:33:51 GMT
Set-Cookie: DedeUserID__ckMd5=0ee5803628e6e65f; Path=/; Domain=bilibili.com; Expires=Fri, 04 Nov 2022 14:33:51 GMT
Set-Cookie: sid=arnh4yay; Path=/; Domain=bilibili.com; Expires=Fri, 04 Nov 2022 14:33:51 GMT
X-Bili-Trace-Id: 047f7679d63e639603f0414b1c6277d4
Access-Control-Allow-Origin: https://www.bilibili.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin,No-Cache,X-Requested-With,If-Modified-Since,Pragma,Last-Modified,Cache-Control,Expires,Content-Type,Access-Control-Allow-Credentials,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Cache-Webcdn,x-bilibili-key-real-ip,x-backend-bili-real-ip,x-risk-header
Cross-Origin-Resource-Policy: cross-origin
Expires: Sun, 08 May 2022 14:33:50 GMT
Cache-Control: no-cache
X-Cache-Webcdn: BYPASS from blzone03{"code":0,"message":"0","ttl":1,"data":{"status":0,"message":"","url":"https://passport.biligame.com/crossDomain?DedeUserID=28970049&DedeUserID__ckMd5=0ee5803628e6e65f&Expires=1667572431&SESSDATA=e9dcd5aa,1667572431,b225f*51&bili_jct=25c49bf8cd149e59dcb85d1958e658d6&gourl=https%3A%2F%2Fwww.bilibili.com%2F"}}

HTTP协议:三.HTTP 报文信息相关推荐

  1. TCP/IP协议三次握手与四次握手流程解析

    原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...

  2. linux 适配电脑内核,Linux内核实践 如何添加网络协议[三]:实现 -电脑资料

    内核版本:2.6.34 接上篇<添加网络协议>, 为了用户方便查看brcm设备的工作状态,使用proc文件系统是很好的方 式.一个网络协议模块可以注册到网络空间中register_pern ...

  3. C# 使用串口分析SAM协议,读取身份证信息

    目录 一.身份证读卡器使用SAM协议使用以下报文进行通讯: 1.寻找身份证信息 2.选取身份证信息 3.读取身份证信息(文字+照片信息) 4 .读取身份证信息(文字+照片+指纹特征点信息) 二.程序介 ...

  4. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义:       这里 ...

  5. 计算机网络.第一节课.笔记.有效数据率、OSI七层结构、TCP/IP四层、网络协议三要素、时延、广域网WAN、局域网LAN、电路交换、报文交换、分组交换

    目录 互联网 基础结构发展 组成 计算机网络 性能特征 非性能特征 分类 按范围分 按使用者分 交换方式 协议 三要素 层次 为什么分层 分了什么层 名词 解释 网络接口卡 即网卡,缩写为NIC.是一 ...

  6. 通俗易懂理解TCP协议三次握手和四次挥手及其常见问题

    TCP协议三次握手和四次挥手 三次握手 如果建立连接只需要2次握手,可能会出现的情况 四次挥手 为什么建立连接是三次握手,关闭连接确是四次挥手呢? TIME_WAIT状态有什么作用,为什么主动关闭方没 ...

  7. TCP协议“三次握手“和“四次挥手“

    TCP协议三次握手和四次挥手 为了使数据的传输更为安全,在OSI七层架构的传输层(TCP)定义了需要建立稳定的连接提供安全的交互环境,而三次握手解决了连接的建立. 三次握手过程: 第一次:客户端向服务 ...

  8. TCP协议三次握手过程

    常见前端面试题 TCP协议三次握手过程 1.第1次握手 建立连接 客户端向服务器发送的报文SYN包信息中SYN码为1 2.第2次握手 服务器回应客户端,用于接受并连接请求 服务器返给客户端的的报文SY ...

  9. PPTP协议介绍及其报文的分析

    PPTP协议介绍及其报文的分析 PPTP简介 PPTP处理的报文 PPTP报文详情及流程 incoming模式(被动模式)与outgoing模式(主动模式)的区别 PPTP数据链路报文格式 其他 PP ...

最新文章

  1. 第八章 让开发板发出声音:蜂鸣器驱动读后感
  2. Spring 的IOC容器系列的设计与实现:BeanFactory 和 ApplicationContext
  3. 今天的一切准备就绪的局域网聊天
  4. saiku连mysql 使用_saiku应用的调试
  5. 技术转管理:应该如何识人、带人和用人?
  6. 上传txt生成字典 java_文件上传漏洞fuzz字典生成脚本小工具分享
  7. 机房收费系统重构版:那个系统我们一起遇到的问题
  8. C 语言的数据类型宽度扩展
  9. Bailian2698 八皇后【回溯】
  10. Android 学习心得体会
  11. mysql 日期格式化_每天一个常用MySQL函数-from_unixtime等
  12. java解析魔兽争霸3录像_Java解析魔兽争霸3录像W3G文件(五):Action和APM计算
  13. ckplayer快速入门
  14. 超实用的!南京南站最新停车指南来了
  15. 利用Photoshop制作毛玻璃效果
  16. 读书笔记_006 《查令十字街84号》
  17. 基于8086的家庭安全防盗系统proteus制作
  18. 外媒:朝鲜导弹发射失败或因美国网络攻击所致
  19. 【AI视野·今日CV 计算机视觉论文速览 第215期】Tue, 8 Jun 2021
  20. 用c语言编写的打字母游戏,用C语言编写小游戏——“井字棋”

热门文章

  1. 微信自定义链接分享制作,微信自定义链接配置
  2. python第四次作业——陈灵院
  3. ES5和ES6的类,静态方法,继承实现代码
  4. 御坂坂的c++学习之路(5)
  5. el-cascader
  6. 浅谈 DDL 技术解密
  7. GXNNCTF 2018 We_ax WriteUp 第三届南宁市网络安全技术大赛
  8. 伽罗华域(Galois Field, GF, 有限域)的四则运算
  9. 北洋大时代:大师们的理想国札记-随想篇
  10. 计算机核心期刊排名及简介一览