HTTP Headers

575 阅读5分钟

HTTP Headers


标题内容
HTTP HeadersHTTP Headers定义
HTTP HeadersHTTP Headers种类
HTTP HeadersHTTP Headers使用
HTTP HeadersHTTP Headers配置(方案,内容以及结果示例)

HTTP Headers定义

  • 我们都知道HTTP协议是应用层面向链接的协议,而HTTP Headers(消息头)允许客户端(client)和服务端(server)通过requestresponse传递附加信息,也就是我们常见的API接口请求。
  • 形式就是<Headers名称>:<Headers值>,需要注意的是Headers名称不区分大小写,Headers值不带换行符并且Headers值前面的引导空白会被忽略

HTTP Headers种类

  • 不同上下问进行种类区分

General Headers

  • 同时适用于请求request和响应response消息,但与最终消息主体body中传输的数据无关的消息头,也就是说不能应用于消息内容自身的HTTP Headers。

  • 取决应用Application的上下文环境,通用首部可以是响应头部或者请求头部,但是不可以实体头部,再次强调了一遍了。

  • 都有如下这些:

消息头描述更多信息HTTP 版本(引入版本)
Cache-Control控制缓存的行为--
Connection逐条首部,链接的管理--
Keep-Alive允许消息发送者暗示连接的状态,还可以用来设置超时时长和最大请求数需要将 The Connection 首部的值设置为 "keep-alive" 这个首部才有意义。同时需要注意的是,在HTTP/2 协议中, Connection 和 Keep-Alive 是被忽略的;在其中采用其他机制来进行连接管理-
Date创建报文的日期时间--
Pragma报文指令--
Trailer报文末端的首部一览列出将在消息正文之后在尾部块中传输的头。这允许服务器计算一些值,如Content-MD5:在传输数据时。请注意,Trailer:标头不得列出Content-Length :, Trailer:或Transfer-Encoding:headers-
Transfer-Encoding指定报文主体的传输编码方式--
Upgrae升级为其它协--
Via代理服务器的相关信息--
Warning错误通知--

Request Headers

  • 包含更多有关要获取的资源或者客户端本身信息的消息头

  • 都有如下这些:

消息头描述更多信息HTTP 版本(引入版本)
Accept用户代理期望的MIME 类型列表HTTP Content NegotiationHTTP/1.1
Accept-Charset列出用户代理支持的字符集HTTP Content NegotiationHTTP/1.1
Accept-Encoding列出用户代理支持的压缩方法HTTP Content NegotiationHTTP/1.1
Accept-Language列出用户代理期望的页面语言HTTP Content NegotiationHTTP/1.1
Authorization包含用服务器验证用户代理的凭证--
Expect期待服务器的特定行为--
Form用户的电子邮箱地址--
Host请求资源所在的服务器--
If-Match比较实体标记(ETag)--
If-Modified-Since比较资源的更新时间--
If-None-Match比较实体标记(与If-Match 相反 )--
If-Range资源未更新时发送实体 Byte 的范围--
If-Unmodified-Since比较资源的更新时间--
Max-Forwards最大传输逐跳数--
Proxy-Authorization代理服务器要求客户端的认证信息--
Range实体的字节范围请求--
Referer对请求中的 URI 的原始获取方--
TE传输编码的优先级--
User-AgentHTTP 客户端程序的信息--

Response Headers

  • 包含有关响应的补充信息,如其位置或者服务器本身(名称和版本等)的消息头。

  • 都有如下这些:

消息头描述更多信息HTTP 版本(引入版本)
Accept-Ranges是否接受字节Bytes范围请求--
Age推算资源创建经过时间--
ETag资源的匹配信息(协商缓存中的消息头)--
Location代理服务器对客户端的认证信息--
Proxy-Authenticate代理服务器对客户端的认证信息--
Retry-After对再次发起请求的时机要求--
ServerHTTP 服务器的安装信息--
Vary代理服务器缓存的管理信息--
WWW-Authenticate服务器对客户端的认证信息--

Entity Headers

  • 包含有关实体主体的更多信息,比如主体长度(Content-Length)或者其他MIME类型

  • 都有如下这些:

消息头描述更多信息HTTP 版本(引入版本)
Allow资源可支持的 HTTP 方法(GET, POST, PUT, DELETE, OPTION)--
Content-Encoding实体主体适用的编码方式--
Content-Language实体主体的自然语言--
Content-Length实体主体的大小(单位:Byte)--
Content-Location替代对应资源的 URI--
Content-MD5实体主体的报文摘要--
Content-Range实体主体的位置范围--
Content-Type实体主体的媒体类型--
Expires实体主体的过期日期时间(强缓存设置参数)--
Last-Modified资源的最后修改日期时间(强缓存的设置参数)--

  • 不同处理方式分类

端到端消息头

  • 请求的服务器(server)或者响应的客户端(client)必须要接受到端到端消息头,也就是是这类消息头必须被传输到最终的消息接收者
  • 中间的代理服务器必须转发未经修改的端到端消息头,并且必须缓存它们

逐跳消息头

  • 逐跳(不是逐条)消息头仅对单次传输连接有意义,不能通过代理或者缓存进行重新转发。这些消息头包括Connection, Keep-Alive, Proxy-Authenticate, Proxy-Authorization, TE, Trailer, Transfer-Encoding以及Upgrade

  • 注意: 只能使用Connection来设置逐跳消息头,也就是说如果我们需要使用逐跳消息头,需要结合Connection消息头配合使用。

  • 通常有如下这些:

消息头描述更多信息HTTP 版本(引入版本)
Connection---
Keep-Alive---
Proxy-Authenticate---
Proxy-Aruhoriztion---
Traller---
TE---
Transfer-Encoding---
Upgrade---

datatracker.ietf.org/doc/html/rf… www.iana.org/assignments… datatracker.ietf.org/doc/html/rf… www.iana.org/assignments… Thinking in JackDan