美文网首页
HTTP 请求首部字段(四)

HTTP 请求首部字段(四)

作者: ssscen | 来源:发表于2016-07-11 14:26 被阅读228次

    请求首部字段

    请求首部字段是从客户端往服务器端发送请求报文中所使用的字段,用于补充请求的附加信息、客户端信息、对响应内容相关的优先级等内容。

    1. Accept

    通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。可使用 type/subtype 这种形式,一次指定多种媒体类型。

    • 文本文件:text/htmltext/plaintext/cssapplication/xml...
    • 图片文件:image/jpegimage/gifimage/png...
    • 视频文件:video/mpegvideo/quicktime...
    • 应用程序使用的二进制文件:application/octet-stream,application/zip...

    若想要给显示的媒体类型增加优先级,则使用 q= 来额外表示权重值,用 ; 进行分隔。权重值范围是0~1,默认为1。

    2. Accept-Charset

    告知服务器用户代理支持的字符集及字符集的相对优先顺序。可一次性指定多种字符集。与首部字段 Accept 相同的是可用权重 q 值来表示相对优先级。

    Accept-Charset

    3. Accept-Encoding

    该字段用来告知服务器用户代理支持的内容编码及内容编码的优先级顺序。可一次性指定多种内容编码。

    • gzip

    • compress

    • deflate

    • identity

      Accept-Encoding:gzip,deflate
      

    4. Accept-Language

    该字段用来告知服务器用户代理能够处理的自然语言集

    5. Authorization

    告知服务器,用户代理的认证信息。通常,想要通过服务器认证的用户代理会在接收到返回的401状态码响应后,把首部字段 Authorization 加入请求中。共用缓存在接收到含有 Authorization 首部字段的请求时操作处理会略有差异。

    6.Expect

    告知服务器,期望出现的某种特定行为。因服务器无法理解客户端的期望做出回应而发生错误时,会返回状态码417 Expectation Failed。

    7. From

    告知服务器使用用户代理的用户的电子邮件地址。

    8. Host

    告知服务器,请求的资源所处的互联网主机名和端口号。Host 首部字段在 HTTP/1.1 规范内是唯一一个必须被包含在请求内的首部字段。
    请求被发送至服务器时,请求中的主机名会用 IP 地址直接替换解决。如果这时,相同的 IP 地址下部署运行着多个域名,那么服务器就会无法理解究竟是哪个域名对应的请求。因此,就需要使用首部字段 Host 来明确指出请求的主机名。 若服务器未设定主机名,那直接发送一个空值即可。如下所示

    Host:
    

    9. If-Match

    告知服务器匹配资源所用的实体标记(ETag)值。这时的服务器无法使用弱 ETag 值。
    服务器会比对 If-Match 的字段值和资源的 ETag 值,仅当两者一致时,才会执行请求。反之,则返回状态码 412 Precondition Failed 的响应。

    If-Match

    10. If-Modified-Since

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

    If-Modified-Since

    11. If-None-Match

    当请求资源的 ETag 值与服务器不一致的时候,告知服务器处理该请求

    If-None-Match

    12. If-Range

    告知服务器若指定的 If-Range 值和请求资源的 ETag 值或时间相一致时,则作为范围请求处理。反之,则返回全体资源。

    If-Range

    如果不使用 If-Range。那么当服务端的资源更新,客户端持有的资源中一部分也会随之无效,这是服务器会暂且以状态码 412 Precondition Failed 作为响应返回,其目的是催促客户端再次发送请求。这样一来就需要多花费两倍的时间。

    没有 If-Range

    13. If-Unmodified-Since

    告知服务器,指定请求资源只有在字段值内指定的日期时间之后,未发生更新的情况下,才能处理请求。如果在指定时间后发生了更新,则以状态码 412 Precondition Failed 作为响应返回。

    14. Max-Forwards

    该字段以十进制整数形式指定可经过的服务器最大数目。服务器在往下一个服务器转发请求之前,Max-Forwards 的值减 1 后重新赋值。当服务器接收到 Max-Forwards值为 0 的请求时,则不再进行转发,而是直接返回响应。

    Max-Forwards

    15. Proxy-Authorization

    接收到从代理服务器发来的认证质询时,客户端会发送包含首部字段 Proxy-Authorization 的请求,以告知服务器认证所需要的信息。

    16. Range

    对于只需获取部分资源的范围请求,包含首部字段 Range 即可告知服务器资源的指定范围。接收到附带 Range 首部字段请求的服务器,会在处理请求之后返回状态码为 206 Partial Content 的响应。无法处理该范围请求时,则会返回状态码 200 OK 的响应及全部资源。

    17. Referer

    告知服务器请求的原始资源的 URI。
    客户端一般都会发送 Referer 首部字段给服务器。但当直接在浏览器的地址栏输入 URI,或处于安全性的考虑是,也可以不发送该首部字段。
    因为原始资源的 URI 中的查询字符串可能含有 ID 和密码等保密信息,要是写进 Referer 转发给其他服务器,则有可能导致保密信息的泄露。

    18. TE

    TE:gzip,deflate;q=0.5
    

    告知服务器,客户端能够处理响应的传输编码方式及相对优先级。它和 Accept-Encoding 的功能很像,但是用于传输编码。
    它除了指定传输编码之外,还可以指定伴随 trailer 字段的分块传输编码的方式。应用后者时,只需要把 trailers 赋值给该字段值

    TE: trailers
    

    19. User-Agent

    该字段会将创建请求的浏览器和用户代理名称等信息传达给服务器。
    如果请求经过代理,那么中间也很可能会被添加上代理服务器的名称。

    相关文章

      网友评论

          本文标题:HTTP 请求首部字段(四)

          本文链接:https://www.haomeiwen.com/subject/oxhjjttx.html