十分钟了解HTTP(2)——HTTP的首部你都知道吗

HTTP常用首部字段总结

一:通用首部
1:Cache-Control——可以控制缓存的首部

Cache-Control常用命令:

是否缓存
服务端的角度:
public:表明所有用户都可缓存
private:表明对特定用户提供缓存服务

客户端的角度:
no-cache:不缓存过期资源
no-cache = location:客户端在接收到这个被指定参数值的首部字段对应的响应报文后,就不能使用缓存。
no-store:不缓存资源

缓存时间
s-maxage: 设置公共缓存服务器的响应时间,直接忽略对 Expires 首部字段及max-age 指令的处理。
max-age:对于请求,返回缓存时间<指定时间的缓存资源;对于响应,则max-age 数值代表资源保存为缓存的最长时间。(HTTP/1.1 版本会优先处理max-age,忽略Expires)
min-fresh:返回缓存时间<=指定时间的缓存资源。
min-stale:返回缓存时间<=指定时间的缓存资源(即使过期)
only-if-cached:要求缓存服务器不重新加载响应,也不会再次确认资源有效性。
must-revalidate:再次验证响应缓存目前是否仍然有效。(忽略请求的 max-stale 指令)
proxy-revalidate:所有的缓存服务器返回响应之前,必须再次验证缓存的有效性。
no-transform:不改变实体主体的媒体类型。

扩展
通过 cache-extension 标记(token),可以扩展 Cache-Control 首部字段内的指令。

2:Connection——管理连接和首部的首部
  • 控制不再转发给代理的首部字段
  • 管理持久连接
    keep-alive:保持连接
    close:关闭连接
3:Date——管理日期的首部

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

4:Param——向后兼容的首部

Pragma 是 HTTP/1.1 之前版本的历史遗留字段,仅作为与 HTTP/1.0
的向后兼容而定义。

5:Trailer——记录报文主体首部的首部

Trailer 会事先说明在报文主体后记录了哪些首部字段。

6:Transfer-Encoding——规定编码的首部

Transfer-Encoding 规定了传输报文主体时采用的编码方式。

7:Upgrade——检测是否可用协议的首部

Upgrade 用于检测 HTTP 协议及其他协议是否可使用更高的版本进行通信

8:Via——追踪路径的首部

Via 可以追踪客户端与服务器之间的请求和响应报文的传输路径。必须在经过代理时附加该首部字段内容,因为他可以避免请求回环。

9:Warning——警告与缓存相关的问题的首部
二:请求首部
1:Accept——表示客户端可处理媒体类型的首部
  • 文本文件: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 …

Accept可以同时指定多个媒体类型,用 “,” 分开,同时可以给每个媒体类型指定权重,用q=(0~1)表示,用 “;” 分开。

2:Accept-Charset——表示客户端支持字符集的首部

Accept-Charset可以同时指定多种字符集,用 “,” 分开,同时可以给每个字符集指定权重,用q=(0~1)表示,用 “;” 分开。

3:Accept-Encoding——表示客户端支持编码的首部
  • gzip:由文件压缩程序 gzip(GNU zip)生成的编码格式。
  • compress:由 UNIX 文件压缩程序 compress 生成的编码格式。
  • deflate:组合使用 zlib 格式及由 deflate 压缩算法生成的编码格式。
  • identity:不执行压缩或不会变化的默认编码格式。

Accept-Encoding可以同时指定多种编码,用 “,” 分开,同时可以给每个编码格式指定权重,用q=(0~1)表示,用 “;” 分开,也可使用星号(*)作为通配符,指定任意的编码格式。

3:Accept-Language——表示客户端支持语言的首部

Accept-Language可以同时指定多种语言,用 “,” 分开,同时可以给每个语言指定权重,用q=(0~1)表示,用 “;” 分开。

4:Authorization——客户端与服务器之间的认证

想要通过服务器认证的用户代理会在接收到返回的401 状态码响应后,把首部字段 Authorization 加入请求中。

5:Expect——客户端期待响应的首部

客户端使用首部字段 Expect 来告知服务器,期望出现的某种特定行为。
如果服务器无法理解客户端的期望作出回应而发生错误时,会返回状态码 417 Expectation Failed。

6:From——表示客户端电子邮箱地址的首部

使用代理时,应尽可能包含 From 首部字段,显示用户代理的负责人的电子邮件联系方式。

7:Host——表示互联网主机名和端口号的首部

首部字段 Host 必须存在,因为它和以单台服务器分配多个域名的虚拟主机的工作机制有很密切的关联,它在 HTTP/1.1 规范内是唯一一个必须被包含在请求内的首部字段。

8:If-Match——匹配资源的实体标记(ETag)值。

服务器会比对 If-Match 的字段值和资源的 ETag 值,仅当两者一致时,才会执行请求。反之,则返回状态码 412 Precondition Failed 的响应。

9:If-Modified-Since——匹配资源的更新时间

若指定条件时间<资源的更新时间,则希望服务器能处理该请求。
若在指定条件时间之后,资源都没有过更新,则服务器返回状态码 304 Not Modified 的响应。
(获取资源的更新日期时间,可通过确认首部字段 Last-Modified 来确定。)

10:If-None-Match——与if-Match相反

服务器会比对 If-Match 的字段值和资源的 ETag 值,仅当两者不一致时,才会执行请求。

11:If-Range——判断是否范围请求处理的条件

如果指定的 字段值(ETag 值或者时间)和 请求资源的 ETag 值或时间相一致时,则服务器作为范围请求处理。反之,则返回全体资源。

12:If-Unmodified-Since——与If-Modified-Since相反

若指定条件时间>资源的更新时间,则希望服务器能处理该请求。
如果在指定日期时间后资源发生了更新,则服务器以状态码 412 Precondition Failed 作为响应返回。

13:Max-Forwards——指定转发值的首部

代理服务器在每次转发请求时,Max-Forwards 数值减 1。当数值变 0 时返回响应。
可以对请求转发失败这个问题展开调查。

14:Proxy-Authorization——客户端与代理之间的认证

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

15:Range——表示范围请求的首部

接收到附带 Range 首部字段请求的服务器,会在处理请求之后返回状态码为 206 Partial Content 的响应以及部分资源
无法处理该范围请求时,则会返回状态码 200 OK 的响应及全部资源。

16:Referer——表示原始资源URI的首部

客户端一般都会发送 Referer 首部字段给服务器。
但当直接在浏览器的地址栏输入 URI,或出于安全性的考虑时,也可以不发送该首部字段。

17:TE——表示客户端支持 ”传输编码“ 的首部

告知服务器客户端能够处理响应的传输编码方式及相对优先级。
也可以指定伴随 trailer 字段的分块传输编码的方式。应用后者时,只需把 trailers 赋值给该字段值。

18:User-Agent——表示浏览器的种类的首部

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

三:响应首部

1:Accept-Ranges——表示服务器处理范围的首部

可指定的字段值有两种,可处理范围请求时指定其为 bytes,反之则指定其为 none。

2:Age——表示服务器响应时间的首部

如果是源服务器响应,则表示源服务器在多久前创建了响应。字段值的单位为秒。
如果是缓存服务器响应,则表示缓存后的响应再次发起认证到认证完成的时间值。

3:ETag——对客户端实体标识的首部

它是一种可将资源以字符串形式做唯一性标识的方式。服务器会为每份资源分配对应的 ETag
值。当资源更新时,ETag 值也需要更新。

  • 强 ETag 值:不论实体发生多么细微的变化都会改变其值。
  • 弱 ETag 值:只有资源发生了根本改变,产生差异时才会改变 ETag 值。(会在字段值最开始处附加 W/)
4:Location——配合重定向的首部

它可以将响应接收方引导至某个与请求 URI 位置不同的资源,基本上,该字段会配合 3xx :Redirection 的响应。

5:Proxy-Authenticate——代理服务器与服务端之间的认证

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

6:Retry-After——再次请求的首部

告知客户端应该在多久之后再次发送请求。
主要配合状态码 503 Service Unavailable 响应,或 3xx Redirect 响应一起使用。

7:Server——表示HTTP信息的首部

它表示当前服务器上安装的 HTTP 服务器应用程序的信息。不单单会标出服务器上的软件应用名称,还有可能包括版本号和安装时启用的可选项。

8:Vary——控制缓存的首部

代理服务器接收到源服务器返回包含 Vary 指定项的响应之后,若再要进行缓存,仅对请求中含有相同 Vary 指定首部字段的请求返回缓存。
如果Vary 指定的首部字段不相同,即使对相同资源发起请求,也必须要从源服务器重新获取资源。

9:WWW-Authenticate——服务器和客户端的认证

它会告知客户端适用于访问请求 URI 所指定资源的认证方案(Basic 或是 Digest)和
带参数提示的质询(challenge)。

四:实体首部

1:Allow——表示服务器接受的HTTP方法

通知客户端能够支持 Request-URI 指定资源的所有 HTTP 方法。
当服务器接收到不支持的 HTTP 方法时,会以状态码405 Method Not Allowed 作为响应返回。

2:Content-Encoding——表示实体主体的内容编码

内容编码是指在不丢失实体信息的前提下所进行的压缩。

  • gzip
  • compress
  • deflate
  • identity
3:Content-Language——表示实体主体的语言

告知客户端,实体主体使用的自然语言(指中文或英文等语言)。

4:Content-Length——表示实体主体的大小

对实体主体进行内容编码传输时,不能再使用 Content-Length首部字段。

5:Content-Location——表示报文主体返回资源对应的 URI

当返回的页面内容与实际请求的对象不同时,首部字段 Content-Location内会写明 URI。

6:Content-MD5——检验报文主体的完整性

客户端会对接收的报文主体执行相同的 MD5 算法,然后与首部字段 Content-MD5 的字段值比较。
目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。

7:Content-Range——表示报文主体的一部分

能告知客户端作为响应返回的实体的哪个部分符合范围请求。

8:Content-Type——表示实体主体的媒体类型
9:Expires——表示资源失效日期的首部

缓存服务器在接收到含有首部字段 Expires 的响应后,会以缓存来应答请求。
在Expires 字段值指定的时间之前,响应的副本会一直被保存。
当超过指定的时间后,缓存服务器在请求发送过来时,会转向源服务器请求资源。
(优先处理 max-age 指令)

10:Last-Modified——表示资源最终修改时间的首部
五:Cookie首部
1:Cookie——客户端获取HTTP 的状态管理支持

当客户端想获得 HTTP 状态管理支持时,就会在请求中包含从服务器接收到的 Cookie。接收到多个
Cookie 时,同样可以以多个 Cookie 形式发送。

2:Set-Cookie——服务器准备开始管理客户端的状态

当服务器准备开始管理客户端的状态时,会事先告知各种信息。

  • expires:指定浏览器可发送 Cookie 的有效期。(当省略 expires 属性时,其有效期仅限于维持浏览器会话“Session”时间段内,这通常限于浏览器应用程序被关闭之前)
  • path:限制指定 Cookie 的发送范围的文件目录。
  • domain:通过 Cookie 的 domain 属性指定的域名,当与结尾匹配一致时可以发送Cookie。
  • secure:Web 页面仅在 HTTPS 安全连接时,才可以发送 Cookie。
  • HttpOnly:使 JavaScript 脚本无法获得 Cookie。(防止跨站脚本攻击)
六:其他非标准首部
1:X-Frame-Options——控制网页在Frame 标签内的显示

其主要目的是为了防止点击劫持(clickjacking)攻击。

  • DENY:拒绝
  • SAMEORIGIN :仅同源域名下的页面
2:X-XSS-Protection——控制浏览器 XSS 防护机制的开关。

它是针对跨站脚本攻击(XSS)的一种对策。

  • 0:过滤无效
  • 1:过滤有效
3:DNT——拒绝个人信息被收集

它是表示拒绝被精准广告追踪的一种方法。

  • 0:同意被追踪
  • 1:拒绝被追踪
4:P3P——保护用户隐私

通过利用 P3P(在线隐私偏好平台)技术,可以让 Web 网站上的个人隐私变成一种仅供程序可理解的形式。

猜你喜欢

转载自blog.csdn.net/weixin_36904568/article/details/88210708