HTTP 首部

作者: lazy_boy_coder | 来源:发表于2018-03-05 20:30 被阅读37次

    首部

    通用首部字段

    Cache-Control(控制缓存的行为)
    no-cache
    Cache-Control: no-cache
    

    使用no-cache为了防止从缓存中返回过期的资源。缓存服务器会向源服务器进行有效期确认后处理资源。

    no-store
    Cache-Control: no-store
    

    当使用no-store指令时,暗示请求和对应的响应中包含机密信息。因此,该指令规定缓存不能在本地存储请求或响应的任一部分。

    s-maxage
    Cache-Control: s-maxage=604800 (单位:秒)
    

    表示处理公共代理服务器的情况下缓存过期没有超过指定的时间时,就会返回缓存。只适用于供多位用户使用的公共缓存服务器,对于同一个用户重复返回相应的服务器来说,这个指令没有任何作用。当使用 s-maxage指令后,则直接忽略对 Expires 首部字段及 max-age 指令的处理。

    max-age
    Cache-Control: max-age=604800(单位:秒)
    

    缓存的最大有效时间,应用HTTP/1.1版本的缓存服务器遇到同时存在 Expires首部字段的情况时,会优先处理 max-age指令,而忽略掉 Expires首部字段,而HTTP/1.0刚好相反。如果,值为0时,表示代理服务器需要将请求转发给源服务器。

    min-fresh
    Cache-control: min-fresh=60(单位:秒)
    

    要求缓存服务器返回未过指定时间的缓存资源。

    max-stale
    Cache-control: max-stale=3600(单位:秒)
    

    使用 max-stale 可以指示缓存资源,即使过期也照常接收。如果,指令中,指定了具体的数值,那么即使过期,只要处于 max-stale指定时间内,仍旧会被客户端接收。

    only-if-cached
    Cache-control: only-if-cached
    

    仅仅使用缓存,如果缓存服务器有指定缓存则返回,否则返回 504 Gateway Timeout。

    must-revalidate
    Cache-Control: must-revalidate
    

    代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。must-revalidate指令会忽略掉 max-stale指令。

    proxy-revalidate
    Cache-Control: proxy-revalidate
    

    要求所有的缓存服务器在接受到客户端带有该指令返回数据之前,必须再次验证缓存的有效性。

    no-transform
    Cache-Control: no-transform
    

    无论是在请求还是在响应当中,缓存都不能改变实体主体的媒体类型。这样做可以防止缓存或代理压缩图片等类似操作。

    Connection
    控制不再转发给代理的首部字段
    GET / HTTP/1.1
    Upgrade: HTTP/1.1
    Connection: Upgrade
    

    如果中间有代理服务器,则经过代理服务器转发给源服务器的请求报文如下:

    GET / HTTP/1.1
    
    管理持久连接
    Connection: close
    

    HTTP/1.1 版本的默认连接都是持久连接,当服务器明确想断开连接时,则指定Connection的首部字段为 close。HTTP/1.1默认是打开的,而之前默认是关闭的。

    Pragma
    Pragma: no-cache
    

    仅用在客户端发送请求的过程中,客户端要求所有的中间服务器不返回缓存的资源。Pragma 是 HTTP/1.1 之前版本的历史遗留字段,仅 作为与 HTTP/1.0 的向后兼容而定义

    Date

    表明创建HTTP报文的日期和时间

    Date: Tue, 03 Jul 2012 04:40:59 GMT
    
    Trailer

    如果,报文采用了分块传输编码方式,就可以用这个首部列出位于报文

    Transfer-Encoding

    会事先说明在报文主体后记录了哪些首部字段,该首部字段可应用于HTTP/1.1 版本分块传输编码

    Upgrade

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

    Via

    为了追踪客户端与服务器之间的请求和响应报文的传输路径。
    报文经过代理或者网关的时候,会先在首部字段Via中附加服务器信息,然后在进行转发。

    Warning

    HTTP/1.1 的 Warning 首部是从 HTTP/1.0 的响应首部(Retry-After)演变过来的,该首部通常会告知用户一些与缓存相关问题的警告。

    请求首部字段

    Accept

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

    文本文件
    text/html,text/plain,text/css
    application/xhtml+xml,application/xml
    
    图片文件
    image/jpeg,image/gif,image/png
    
    视频文件
    video/mpeg,video/quicktime
    
    应用程序中使用的二进制文件
    application/octet-stream,application/zip
    

    若要给显示的媒体类型增加优先级,则使用q=来额外表示权重值,用分号(;)进行间隔。权重q的范围是 0 ~ 1(可精确到小数点后3位),且1为最大值。不指定权重q值时,默认权重为 q=1.0。当服务器提供多种内容时,将会首先返回权重最高的媒体类型。

    Accept-Charset
    Accept-Charset: iso-8859-5,unicode-1-1;q=0.8
    

    通知服务器用户代理支持的字符集及字符集的相对优先顺序。

    Accept-Encoding
    Accept-Encoding: gzip,deflate
    

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

    压缩
    gzip,compress,deflate
    
    identity

    不执行压缩或不会变化,默认的编码格式

    Accept-Language
    zh-Hans-US;q=1, en;q=0.9
    

    用来告知服务器用户代理所能处理的自然语言集,以及自然语言集的相对优先顺序

    Authorization
    Authorization: Basic dWVub3NlbjpwYXNzd29yZA==
    

    用来告知服务器,用户代理的认证信息值。

    Expect
    Expect: 100-continue
    

    告知服务器,期望出现的某种特定的行为。

    Form
    Form: xxxxxxx@gmail.com
    

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

    Host
    Host: www.baidu.com
    

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

    If-Match
    If-Match: "123456"
    

    服务器接收到,附带条件请求后,只有判断If-Match的字段值和资源ETag的值,仅当两者一致时,才会执行请求。

    If-Modified-Since
     If-Modified-Since: Mon, 05 Mar 2018 08:03:31 GMT
    

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

    If-Unmodified-Since

    与If-Modified-Since 作用刚好相反。

    If-None-Match
    If-None-Match: *
    

    只有在If-None-Match的字段值与ETag值不一致时,可处理该请求。与If-Match首部字段的作用相反。

    If-Range
    If-Range: "123456"
    

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

    Max-Forwards
    Max-Forwards: 10
    

    每次转发数值减1,当数值变为0的时候返回响应。

    Proxy-Authorization
    Proxy-Authorization: Basic dGlwOjkpNLAGfFY5
    

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

    Range
    Range: bytes=5001-10000
    

    对于只需获取部分资源范围内的请求,包含首部字段Range即可告知服务器资源的指定范围。

    Referer
    Referer: http://www.jianshu.com/writer#/notebooks/21560928/notes/24474419/preview
    

    会告知服务器请求的原始资源的URI。

    TE
    TE: gzip,deflate;q=0.5
    

    告知服务器,客户端能够处理响应传输的编码方式,及相对优先级。它和首部字段Accept-Encoding的功能很相像。

    User-Agent
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5
    

    会讲创建请求的浏览器和用户代理名称等信息传达给服务器。

    响应首部字段

    Accept-Ranges
    Accept-Ranges: none
    

    首部字段用来告知客户端是否能处理范围请求,以指定获取服务器某个部分的资源。
    可指定的范围有两种,可处理指定范围内的请求指定其为 bytes,反之则指定其为none。

    Age
    Age: 600 (单位:秒)
    

    首部字段Age能告知客户端,源服务器在多久前创建了响应。若创建响应的服务器是缓存服务器,Age的值是指缓存后的响应到再次发起认证到认证完成的时间值,代理创建响应时必须加上首部字段Age。

    ETag
    ETag: "82e22293907ce725faf67773957acd12"
    

    能告知客户端的实体标识,服务器会为每份资源分配对应的ETag值。

    强 ETag 值:
    不论实体发生多么细微的变化都会改变其值。
    弱ETag值:
    ETag的值只用于提示资源是否相同。只有资源发生根本的改变,产生的差异才会改变ETag值。这时,会在字段最开始处附加:

    ETag: W/"usagi-1234"
    
    Location
    Location: https://www.baidu.com
    

    可以将响应接收方引导至某个与请求URI位置不同的资源。

    Proxy-Authenticate
    Proxy-Authenticate: Basic realm="Usagidesign Auth
    

    会把代理服务器所要求的认证信息发送给客户端

    Retry-After
    Retry-After: 120(单位:秒)
    

    告知客户端该在多久之后再次发送请求。

    Server
    Server: Apache/2.2.17 (Unix)
    

    告知客户端当前服务器上安装的HTTP服务器应用程序的信息。

    Vary
    Vary: Accept-Language
    

    当代理服务器接收到带有Vary首部字段指定获取资源的请求时,如果使用的Accept-Language字段的值相同,那么就直接从缓存返回响应。反之,则需要从源服务器端获取资源后才能作为响应返回

    WWW-Authenticate
    WWW-Authenticate: Basic realm="Usagidesign Auth"
    

    用于HTTP的访问认证

    实体首部字段

    Allow
    Allow:GET,HEAD
    

    用于通知客户端能够支持的Request-URI指定资源的所有的HTTP方法。当服务器收到不支持的HTTP方法时,会以状态码405 Method Not Allowed 作为响应返回。还会把所有能支持的HTTP方法写入首部字段Allow后返回。

    Content-Encoding
    Content-Encoding: gzip
    

    告知客户端对实体的主体部分选用的内容编码方式。内容编码是指在不丢失实体信息的前提下进行的压缩。
    压缩:

    gzip
    compress
    deflate
    

    不压缩:

    identity
    
    Content-Language
    Content-Language: zh-CN
    

    告知客户端,实体主体使用的自然语言

    Content-Length
    Content-Length: 15000
    

    表明实体主体部分的大小(单位是字节)。

    Content-Location
    Content-Location: https://www.baidu.com
    

    给出与报文主体相对应的URI。

    Content-MD5
    Content-MD5: OGFkZDUwNGVhNGY3N2MxMDIwZmQ4NTBmY2IyTY==
    

    报文主体的MD5值。

    Content-Range
    Content-Range: bytes 5001-10000/10000
    

    针对范围请求,返回响应时使用的首部字段 Content-Range ,能告知客户端作为响应返回的实体哪个部分符合范围请求。

    Content-Type
    Content-Type: application/octet-stream
    

    实体主体内对象的媒体类型

    Expires
    Expires: Wed, 04 Jul 2012 08:26:05 GMT
    

    会将资源失效的日期告知客户端

    Last-Modified
    Last-Modified: Wed, 23 May 2012 09:59:55 GMT
    

    指明资源的最终修改时间

    相关文章

      网友评论

        本文标题:HTTP 首部

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