HTTP===http首部字段

HTTP 首部字段

HTTP 首部字段是构成 HTTP 报文的要素之一。在客户端与服务器之间以 HTTP 协议进行通讯的过程当中,不管是请求仍是响应都会使用首部字段,它能起到传递额外重要信息的做用。html

使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。浏览器

HTTP 首部字段结构

HTTP 首部字段是由首部字段名和字段值构成的,中间用冒号“:” 分隔。
                                 首部字段名: 字段值
例如,在 HTTP 首部中以 Content-Type 这个字段来表示报文主体的 对象类型。
           Content-Type: text/html缓存

就以上述示例来看,首部字段名为 Content-Type,字符串 text/html 是字段值。服务器

另外,字段值对应单个 HTTP 首部字段能够有多个值,以下所示。
          Keep-Alive: timeout=15, max=100spa

*若 HTTP 首部字段重复了会如何
当 HTTP 报文首部中出现了两个或两个以上具备相同首部字段名时会怎么样?这种状况在规范内还没有明确,根据浏览器内部处理逻辑的不一样,结果可能并不一致。有些浏览器会优先处理第一次出现的首部字段,而有些则会优先处理最后出现的首部字段。3d

4 种 HTTP 首部字段类型

HTTP 首部字段根据实际用途被分为如下 4 种类型。
通用首部字段(General Header Fields)
请求报文和响应报文两方都会使用的首部。
请求首部字段(Request Header Fields)
从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。
响应首部字段(Response Header Fields)
从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
实体首部字段(Entity Header Fields)
针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。代理

HTTP/1.1 规范定义了以下 47 种首部字段。htm

通用首部字段:对象

请求首部字段:blog

响应首部字段:

实体首部字段:

非 HTTP/1.1 首部字段

在 HTTP 协议通讯交互中使用到的首部字段,不限于 RFC2616 中定义的 47 种首部字段。还有 Cookie、Set-Cookie 和 Content-Disposition等在其余 RFC 中定义的首部字段,它们的使用频率也很高。

这些非正式的首部字段统一概括在 RFC4229 HTTP Header FieldRegistrations 中。

End-to-end 首部和 Hop-by-hop 首部

HTTP 首部字段将定义成缓存代理和非缓存代理的行为,分红 2 种类型。
端到端首部(End-to-end Header)
分在此类别中的首部会转发给请求 / 响应对应的最终接收目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发。
逐跳首部(Hop-by-hop Header)
分在此类别中的首部只对单次转发有效,会因经过缓存或代理而再也不转发。HTTP/1.1 和以后版本中,若是要使用 hop-by-hop 首部,需提供 Connection 首部字段。

下面列举了 HTTP/1.1 中的逐跳首部字段。除这 8 个首部字段以外,
其余全部字段都属于端到端首部。

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • Trailer
  • TE
  • Transfer-Encoding
  • Upgrade
相关文章
相关标签/搜索