您的位置
主页 > 国内新闻 » 正文

一文带你看清 HTTP 所有概念

来源:www.mymobilereo.com 点击:1364

在最后一篇文章中,我们简要解释了HTTP的基本特性和用法,得到了很好的响应。因此,在本文中,我们将探讨HTTP的特性。我们将继续介绍上一篇文章中没有完成的HTTP报头(本文将介绍所有报头的概念,但不会深入到底层)。

HTTP报头

首先,让我们回顾一下HTTP1.1报头有哪些类型

HTTP 1.1报头主要分为四种,现在让我们介绍这些类型的报头

Common Headers

HTTP Common Headers之所以这样命名,是因为与其他三个类别不同,它们并不局限于特定类型的消息或消息组件(请求、响应或消息实体)。HTTP公共头主要用于传递消息本身的信息,而不是它所携带的信息。它们提供一般信息并控制消息的处理方式。

虽然公共头并不局限于请求或响应消息,但某些公共头主要或完全用于特定类型的请求。换句话说,如果请求消息中出现了一个公共标题,那么大多数公共标题将显示在请求消息中。回复信息是一样的。

让我们列出一个我们都需要介绍的常见标题

缓存-控制

连接

日期

Pragma

拖车

传输-编码

升级

VIA

警告

缓存-控制

列表。它是计算机领域的重要概念,也是优化系统性能的利器。不仅计算机中的中央处理器选择使用寄存器作为辅助以提高指令执行的效率,而且计算机网络中也有高速缓存。让我们在计算机网络中引入缓存。

是一个通用的标题指令,用于管理如何对HTTP请求或响应使用缓存。

因为它可以出现在计算机网络中,也就是说,这个指令可以通过缓存服务器在影响下控制缓存;不仅缓存服务器,浏览器内部的缓存也会影响链接的缓存。

许多单独的指令可以出现在这个标题中,它们的细节可以在RFC 2616中找到。即使这是一个常规标题,一些指令也只能出现在请求或响应中。下表提供了缓存控制选项的摘要,并告诉您如何使用

请注意,缓存控制头中只能出现一条指令,但消息中可以出现多个这样的头。

上表实际上有四个类别

:它们是、和

:它们是、

:它们是和

:它们是和

。详细介绍表的内容

no-cache

很容易让人迷惑,而且通常认为它没有被缓存,但它没有。

使用无缓存指令的目的是防止过期资源从缓存中返回。例如,如下图

所示,如果锅里有新的肉片,你会明白无缓存相当于吃锅里的肉。如果锅里没有新的,那就吃你自己的,这相当于由源服务器生成,也相当于缓存。

no-store

才是真正的意思。每当服务器收到来自客户端的请求时,它都会将最新的资源返回给客户端。

max-age

可用于请求或响应。当客户端发送具有最大年龄的指令时,缓存服务器将确定其自己的缓存时间值和最大年龄的大小。如果小于最大年龄,则缓存有效,并且可以继续将缓存的数据返回给客户端。如果大于最大年龄,缓存服务器将无法向客户端返回缓存数据。

如果是这样,缓存服务器将直接将请求转发给服务器

注意:最大年龄的值相对于请求时间是

必须重新验证

的,表示一旦资源过期,缓存必须使用其过期的数据,而不能在原始服务器上成功验证。这四个头的

属性只出现在客户端响应中,表示该响应可以被任何缓存缓存。在计算机网络中,有两种类型的缓存,共享缓存和私有缓存,如下所示

属性只出现在客户端响应中,表示该响应可以被任何缓存缓存。在计算机网络中,有两种类型的缓存,共享缓存和私有缓存,如下所示

当指定指令时,响应仅针对特定用户,这与的用法相反。缓存服务器只缓存特定的客户端,而缓存服务器不会为其他客户端发送的请求返回缓存。

s-maxage

指令与该指令具有相同的功能,只是s-maxage不能用于专用缓存,而只能用于多个用户使用的公共服务器。该指令对同一用户的重复请求和响应没有影响。

min-fresh

只能出现在请求中,要求缓存服务器在min-fresh时间内返回缓存数据。例如,这要求缓存服务器在60秒内发送数据。

max-stable

只能出现在请求中,表示客户端将接受缓存的数据,即使它过期了。

only-if-cached

头只能出现在请求中,使用指令来指示如果目标资源被缓存服务器本地缓存,客户端将只请求目标资源返回。

proxy-revalidate

指令要求所有缓存服务器在接收到来自客户端的带有该指令的请求返回响应之前,再次验证缓存的有效性。

no-transform

指令指定缓存不能在请求或响应中更改实体的媒体类型。

Connection

HTTP协议使用TCP来管理连接方法。主要有两种连接方法,和。

持久连接

持久连接意味着在一个会话完成后,不会关闭TCP连接。第二次发送请求后,不再需要建立TCP连接,但可以直接进行请求和响应。它的一般表示如下

从HTTP 1.1开始,默认情况下使用持久连接。

也是一个常见的标题。通常,连接与保活一起使用,保活有两个参数,一个是;另一个是它们的主要表现形式如下:

timeout:是指空闲连接必须打开的最短时间,即该请求的连接时间不能少于5秒;

max:是指在连接关闭之前服务器可以接收的最大请求数。

非持久连接

非持久连接表示在会话请求/响应后如何关闭连接。在HTTP 1.1之前使用的连接是非持久连接,也就是说

Date

Date是一个常见的标头,可以出现在请求标头和响应标头中。它的基本表示如下:

表示格林威治时间,比北京时间慢八个小时。

Pragma

是http 1.1早期版本的遗留字段,仅定义为与http向后兼容。其一般形式如下

仅用于客户端发送的请求。客户端将要求所有中间服务器不返回缓存的资源。

如果所有中间服务器都基于HTTP /1.1,那么可以直接使用缓存控制:无缓存。如果没有,它必须包含两个字段,如下

Trailer

Header字段Tailer将预先解释哪些标题字段记录在消息正文之后。此标题字段可应用于HTTP/1.1版本块传输编码。一般用法如下:

在上面的用例中,标题字段Trailer的值被指定为Expires,标题字段Expires出现在消息正文之后(块长度为0之后)。

传输编码

传输编码属于内容协商的范畴。内容协商将在下面详细描述。现在,让我们提前通知:用于传输消息的编码方法是指定的。

注意:HTTP 1.1传输编码方法只对块传输有效,但是HTTP 2.0不再支持块传输,它提供了自己更有效的数据传输机制。

Transfer-Encoding也属于,让我们回顾一下,HTTP消息头可以根据属性的位置分为、和;它也可以根据是否被缓存分为和。

除了下面的八个逐跳报头,其余的属于端到端报头

连接、保持活动、代理认证、代理授权、尾部、te、传输编码、升级

返回到下面的讨论。传输编码用于在两个节点之间传输消息,而不是资源本身。在通过多个节点传输消息的过程中,每一段消息可以被不同地传输。如图

Transfer-Encoding支持文件压缩,如果你想以压缩形式发送的话。所有可选的传输编码类型如下

:数据以一系列块的形式发送,在这种情况下,报头被省略,并且在每个块的开头,当前块的长度需要以十六进制填充,然后是块本身,然后是另一个。当大量数据被发送到客户端,并且在请求被完全处理之前可能不知道响应的总大小时,块编码是有用的。例如,当生成由数据库查询生成的大型HTML表或传输大型图像时。块的响应看起来像这样

stop块通常是0。在标题后面,拖车可能是空的。

:使用算法的格式。值名取自实现算法的压缩程序。现在很少有浏览器使用这种内容编码,因为这项专利在2003年停止了。

:使用结构和紧缩压缩算法

:使用32位格式。这原本是程序的格式。该标准还建议支持这种内容编码的服务器将x-gzip标识为别名,以实现兼容性。

:使用身份功能(即不压缩或修改)。

还可以列出用逗号分隔的多个值,类似于set list

Upgrade

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

用例中,在标题字段中指定的值是。请注意这两个字段的标题字段之间的对应关系。连接的值被指定为升级。

Upgrade标头字段仅在客户端和相邻服务器之间有效。因此,当使用标题字段升级时,需要额外的规范。

对于标题为“升级”的请求,服务器可以返回状态代码作为响应。

Via

使用Via来跟踪客户端和服务器之间的请求/响应路径,避免请求循环,并识别链中的发送方协议。通过字段由代理服务器添加,无论是正向代理还是反向代理,并且可以出现在请求头和响应头中。它用于跟踪邮件转发。例如,下图中显示的

Via表示接收服务器上的HTTP版本。Via标头用于跟踪路径,通常与方法一起使用。

Warning

NOTE: Warning字段即将被弃用

Check WARNING()和WARNING : header stall-While-Revalidate()获取更多详细信息

Warning常见的HTTP标头通常通知用户一些与缓存相关的问题警告

HTTP/1.1定义了7种警告。它们如下

Request Header

客户端使用请求头向服务器发送HTTP请求。让我们来看看HTTP请求头包含哪些字段以及它们的含义。以下是对

的介绍。这里是

Accept-charset

Accept-encoding

Accept-language

Authorization

expect

from

host

IF-match

IF-modified-sine

IF-none-mat CH

IF-RANGE

IF-unmodified-ALIN

MAX-FORWARDS

Proxy-Authorization

RangeReferer

TE

USER-AGENT

客户端使用请求头向服务器发送HTTP请求。让我们来看看HTTP请求头包含哪些字段以及它们的含义。以下是对

Accept

HTTP请求头,它告诉客户端可以接收什么样的MIME类型以及什么样的MIME类型。在回答这个问题之前,您应该首先了解什么是描述消息内容类型的互联网标准。MIME消息可以包含文本、图像、音频、视频和其他特定于应用程序的数据。

也就是说,MIME类型实际上是消息内容类型的集合。什么是MIME类型?

: text/html、text/plain、text/css、application/xhtml xml、application/xml

: image/jpeg、image/gif、image/png

: video/mpeg、video/QuickTime

:Application/Otet-Stream、application/zip

例如,如果浏览器不支持显示png图片,Accept不指定image/png,而是指定image/gif、image/jpeg和其他可以处理的图像类型。

常见的MIME类型也与该属性一起使用。什么是问?q是重量,让我们看一个例子。

这是什么意思?如果要为显示的媒体类型添加优先级,可以使用q=来表示权重值。当未显示重量时,默认值为1.0。我给你一个表格,你会明白

q

mime

1.0

text/html

1.0

application/XHTML XML

0.9

application/XML

0.8

*/*

就是说,这是一个放置顺序,前后权重较高,是一个不可分割的整体。

Accept-Charset

表示客户端可以接受的字符编码。接受-字符集也是。就像

一样,它也可以用Q来表示字符集并对其进行划分。例如

事实上,许多以开头的标题属于内容协商的范畴。我们将在下面讨论内容协商。

Accept-Encoding

意味着HTTP头将指示客户端希望服务器返回的内容代码,这通常是一种压缩算法。接受编码也是的一部分,它使用并返回客户端选择的内容。

即使客户端和服务器都支持相同的压缩算法,服务器也可能选择不压缩并返回。这可能是因为要传输的:

数据由于这两种情况已经被压缩了一次。第二次压缩不会导致传输的数据变小。

服务器过载,无法承受压缩带来的性能开销。一般来说,如果服务器使用80%以上的中央处理器,建议不要使用压缩

下面是接受编码

的用法。以上几个表达式在文件压缩程序gzip生成的编码格式中列出了接受编码

:的所有属性,并使用32位循环冗余校验的压缩格式。感兴趣的学生可以使用该算法阅读()

:的压缩格式。感兴趣的学生可以阅读()

:压缩格式使用zlib结构和紧缩压缩算法。参考()和():压缩格式使用Brotli算法。引用()

默认编码格式

:不执行压缩或更改,匹配标题中未列出的任何内容编码。如果未列出,则这是默认值,这并不意味着

支持任何算法,而只是意味着

不喜欢使用权重Q值来表示相对优先级,这与标题字段Accept相同。

Accept-Language

请求表示客户端需要服务器返回的语言类型。接受-语言也属于内容协商的范畴。服务器通过响应用权重值来表示相对优先级,就像接受头字段一样。例如,

Authorization

HTTP请求头用于向服务器验证用户代理的凭据。它通常在服务器以401未授权状态和WWW-Authenticate头响应后使用。这是什么意思?如果你不明白,我会画一张图片给你看

请求头是用来通知服务器用户的认证信息的。服务器在接收到身份验证后,只会向客户端返回200 OK响应。如果没有认证信息,它将返回401并通知客户需要认证信息。有关授权的详细信息,稍后将详细解释

Expect

Expect HTTP请求头,以表明服务器为了正确处理请求而需要满足的期望。如果服务器无法完成客户服务方的期望,并且服务器有错误,它将返回。HTTP 1.1仅规定。

如果服务器能正常完成客户所期望的,它将返回100

如果不能满足期望或返回任何其他状态代码,它将返回417

例如

From

请求头,通知服务器用户代理的电子邮件地址。在正常情况下,它的目的是显示负责用户代理(如搜索引擎)的人员的电子邮件联系信息。使用代理时,我们应该尽可能多地包括“发件人”标题字段。例如

您不应该在访问控制或身份验证中使用“发件人”。

Host

请求头指示服务器的域名(对于虚拟主机)和(可选)服务器侦听的TCP端口号。如果没有给出端口号,将自动使用所请求服务的默认端口(例如,请求一个HTTP的URL将自动使用80作为端口)。

Host头字段是唯一一个必须包含在请求中的头字段。

如果-匹配

If-Match后面可以跟随大量属性。调用形式为如果匹配的请求头。服务器收到条件请求后,需要确定条件请求是否得到满足。只有当条件请求为真时,它才会执行条件请求。

同样,对于和方法,如果-匹配、如果-修改-正弦、如果-无-匹配、如果-范围、如果-未修改-正弦

时,服务器仅在匹配所列方法之一时才返回请求的资源。这里还有一个新词。稍后我们将讨论ETag的用法。对于像和其他不安全的方法,在这种情况下,它只会上传资源。

以下是两种常见情况。

对于和方法,组合使用头来确保新发送的请求的范围与前一个请求的资源相同。如果没有匹配,将返回一个响应。

对于其他方法,尤其是方法,可以防止更新丢失。服务器会将“如果匹配”的字段值与资源的ETag值进行比较。只有当两者一致时,请求才会被执行。相反,返回状态代码412“前提条件失败”的响应。例如

if-modified-sink

是HTTP条件请求的一部分。只有在给定日期之后,服务器才会修改请求所需的资源,并返回200 OK响应。如果服务器在给定日期之后没有修改内容,响应将返回,没有任何响应正文。如果-修改-自只能使用和请求。

if-modified-sine在与If-None-Match结合使用时被忽略,除非服务器不支持If-None-Match。这是格林威治标准时间。HTTP日期总是用格林威治标准时间表示,而不是当地时间。

条件请求的效果与相反,只有当的字段值与的值不一致时,才能处理该请求。对于和,只有当服务器与给定资源不匹配时,服务器才会返回200作为响应。对于其他方法,只有当最终现有资源的ETag与任何列出的值都不匹配时,才会处理请求。

条件请求的效果与相反,只有当的字段值与的值不一致时,才能处理该请求。对于和,只有当服务器与给定资源不匹配时,服务器才会返回200作为响应。对于其他方法,只有当最终现有资源的ETag与任何列出的值都不匹配时,才会处理请求。

当和发送匹配时,服务器返回。

一些学生可能想知道这意味着什么。这实际上是ETag的弱匹配。我们将在响应标题中详细说明ETag。

如果-Range

也是一个条件请求。如果满足条件(如果-Range值与ETag值或更新的日期和时间匹配),将发出范围请求,否则将返回所有资源。它的一般表达式如下:

if-unmodified-sine

http请求头也是一个条件请求。只有在给定日期之后服务器没有修改请求资源时,它才返回请求资源。如果更新发生在指定的日期和时间之后,状态代码将作为响应返回。

MDN使该标题变灰,因此以下内容取自和方法中常用的《图解 HTTP》

MDN使该标题变灰,因此以下内容取自和方法中常用的《图解 HTTP》

中。发送包含的标题字段时,每次通过服务器时,最大转发数的值将为-1,直到最大转发数为0。最大转发数是一个十进制整数值。

您可以灵活地使用标题字段最大转发来调查上述问题的原因。因为当最大转发字段值为0时,服务器将立即返回响应,所以我们至少可以确定以该服务器结束的传输路径的通信状态。

Proxy-Authority

属于请求和认证的范畴。我们上面提到过,身份验证的HTTP头是授权,这不同于客户端和服务器之间的授权。发生在代理服务器和客户端之间。这意味着当从代理服务器接收到认证时,客户端将发送一个包含标题字段“代理授权”的请求,通知服务器认证所需的信息。

HTTP请求头表示服务器应该返回文档指定部分的资源。您可以一次请求一个范围来返回多个零件。服务器会将这些资源返回给每个文档。如果服务器成功返回,将返回响应206;如果范围范围无效,服务器返回一个错误;服务器也可以忽略范围头并返回200作为响应。

HTTP请求头表示服务器应该返回文档指定部分的资源。您可以一次请求一个范围来返回多个零件。服务器会将这些资源返回给每个文档。如果服务器成功返回,将返回响应206;如果范围范围无效,服务器返回一个错误;服务器也可以忽略范围头并返回200作为响应。

HTTP Referer属性是请求头的一部分。当一个浏览器向一个网络服务器发送请求时,它通常会带来一个Referer,告诉服务器该页面是从哪个页面链接的,这样服务器就可以获得一些信息进行处理。

HTTP Referer属性是请求头的一部分。当一个浏览器向一个网络服务器发送请求时,它通常会带来一个Referer,告诉服务器该页面是从哪个页面链接的,这样服务器就可以获得一些信息进行处理。

报头字段将通知服务器客户端可以处理响应的传输编码方法和相对优先级。它在功能上类似于报头字段接受编码,但用于传输编码。

报头字段TE除了传输编码之外,还可以指定伴随尾部字段的块传输编码的模式。当应用后者时,只需要将拖车分配给字段值。“用户-代理”标题字段将创建请求的浏览器和用户代理名称等信息传递给服务器。

Response Header

刚才我们的重点是客户端请求,现在我们将把重点转向服务器。响应头字段是服务器发送给客户端的响应中包含的字段,用于补充相应的信息等。头部的这一部分也很大。让我们看看

accept-ranges

location

etag

location

proxy-authenticate

retry-after

server

vary

www-authenticate

accept-ranges

accept-ranges-HTTP响应标头,该标头有两个值

etag

当服务器能够处理客户端发送的请求时,以及

当服务器不能处理客户端发送的请求时,用于指定

Age HTTP响应标头,以告知客户端源服务器多久前创建了响应。它的单位是,年龄头通常接近0。如果为0,则可以从源服务器获得;如果它不表示它可能是由代理服务器创建的,则年龄值表示从缓存响应再次启动身份验证到身份验证完成的时间值。代理在创建响应时必须添加标题字段年龄。一般来说,下面的

location

ETag对于有条件的请求非常重要。因为条件请求是根据ETag的值匹配的,所以让我们仔细看看。

proxy-authenticate

ETag响应头是一个标识,它使缓存更有效并节省带宽,因为如果缓存内容没有改变,网络服务器不需要重新发送完整的响应。此外,ETag可以防止资源同时更新和覆盖。

如果给定上的资源发生变化,必须生成一个新值。通过比较它们,可以确定资源的两种表示是否相同。

ETag有两个值,一个是强ETag,另一个是弱ETag;

强ETag值,无论实体发生多么微小的变化,都会改变它的值,一般表示为

弱ETag值,弱ETag值仅用于提示资源是否相同。只有当资源发生根本变化且存在差异时,ETag值才会发生变化。在这种情况下,W//被附加在字段值的开头。

Location响应标头指示该需要重定向该页面,该页面仅用于或状态响应。以下是页面重定向过程

retry-after

使用标题字段“位置”将响应收件人定向到不同于请求URI位置的资源。

和不同:位置代表目标的重定向(或新创建资源的)。但是,“内容位置”表示当内容协商发生时,无需进一步协商即可访问资源的直接。位置是与响应相关联的标题,而内容位置与返回的实体相关联。

HTTP响应头定义了应该用来访问代理服务器(客户端)后面的资源的身份验证方法。

server

它类似于HTTP客户端和服务器之间的访问认证行为,只是认证方在客户端和代理之间。它的一般表示如下

重试-之后

vary

有三种主要情况,这表示服务预计不可用的时间。

发送响应时,这表示在发送新请求之前需要等待多长时间。

当发送类似的重定向响应时,这表示用户客户端在发送重定向请求之前等待的最短时间。

字段值可以指定为特定的日期和时间或创建响应后的秒数。例如,

服务器

www-authenticate

您应该避免使用太长和详细的服务器值,因为它们可能会暴露内部实现细节,这可能会使攻击者容易发现和利用已知的安全漏洞。例如,下面的表达式

accept-ranges

不同的HTTP响应头决定如何匹配请求头,以确定是否可以使用缓存的响应,而不是从原始服务器请求新的响应。

www-Authenticate

HTTP响应头定义了用于获得资源访问权的身份验证方法。WWW-Authenticate报头与401个未经授权的响应一起发送。它的一般表示如下

Access-Control-Allow-Origin

一个返回的HTTP头可能有Access-Control-Allow-Origin,指定一个告诉浏览器允许访问资源的源。否则-对于没有凭据的请求通配符,告诉浏览器允许任何源访问资源。例如,为了允许源代码访问资源,您可以指定:

如果服务器指定了单个源而不是通配符,则服务器还应该在“变化”响应头中包括,以向客户端指示服务器响应将根据原始请求头的值而变化。

Entity Headers

Entity Headers用于HTTP请求和响应中,如内容长度、内容语言和内容编码头都是实体头。实体标题不限于请求标题或响应标题。在下面的示例中,它是一个实体头。但是它出现在下面的请求消息

中。假设实体头包含什么

Allow

content-encoding

content-language

content-length

content-location

content-MD5

content-range

content-Type

Expires

Last-Modified

The

Allow

HTTP实体头列出了资源支持的方法集合。如果服务器响应状态代码来指示可以使用哪些请求方法,则必须发送该标头。例如,

代码表示服务器允许支持、和方法。当服务器收到不支持的HTTP方法时,它会返回一个状态代码作为响应。

content-encoding

我们上面说过,客户端希望服务器返回内容代码,但实际上服务器返回给客户端的内容代码实际上是返回的。内容编码指的是不丢失实体信息的压缩。主要有四种,与接受编码相同。他们是gzip,压缩,放气,身份。以下是一组请求/响应内容压缩代码

content-language

标头字段Content-Language将通知客户端服务器使用的自然语言,这与接受语言相反。下面是一组请求/响应语言类型

content-length

Content-Length实体头,是指服务器发送给客户端的实际正文大小,以字节为单位。

如上所述,服务器返回给客户端的主体大小是3000字节。

content-location

内容-位置不对应于接受-位置,因为没有这样的标题。事实上,内容位置对应于。

Location和Content-Location是不同的,Location代表重定向的,而Content-Location代表用于访问资源的直接,将来不需要进一步的内容协商。位置是与响应相关联的标题,而内容位置是与返回数据相关联的标题。如果您不太理解,请查看下表

request header

responseheader

content-MD5

client将对收到的消息体执行相同的MD5算法,然后将其与报头字段Content-MD5进行比较。

标头字段内容-MD5是由MD5算法生成的一串值。其目的是检查消息体在传输过程中是否保持完整,是否被修改,并确认传输的到达。为范围请求设置了

content-range

HTTP的内容范围响应标头。当返回响应时,报头字段用于通知客户端响应实体的哪一部分满足客户端请求。该字段以字节为单位。它的一般表达式如下:

上面的代码表示从所有字节返回的字节内容

content-Type

HTTP响应头内容-Type描述实体中对象的媒体类型,与头字段Accept一样使用,表示服务器可以响应的媒体类型。

Expires

HTTP Expires实体头包含,在该日期/时间之后,响应被认为是过期的;它在响应时间内被认为是有效的。特殊值(如0)表示过去的日期,并表示资源已过期。

源服务器将向客户端发送资源到期的日期或时间。在收到来自过期的响应后,缓存服务器将确定是否将缓存返回给客户端。

当源服务器不希望缓存服务器缓存资源时,最好在过期字段中写入与标题字段日期相同的时间值。但是,当标题字段“缓存控制”指定了最大年龄指令时,最大年龄指令将优先于标题字段“过期”进行处理。

Last-Modified

实体字段指示资源的最后修改时间,并用作验证器来确定接收或存储的资源是否相同。它的功能没有那么精确,它可以用作备份机制,并且包含或标头的条件请求将使用此字段。它的一般表达式如下

Summary

本文主要介绍四个HTTP头的基本概念,但并没有涵盖所有的概念。毕竟,HTTP头实在太多了。上述概念都是日常工作中常用的。下一篇文章预览了超文本传输协议的黑色技术

文章参考:

_ HttpGeneralHeaders . htm

. tcpip guide . com/free/t _ HttpChingFeaturesAndIssueS . htm

缓存_验证