5 HTTP 首部(二):请求首部字段

来源:互联网 发布:php网站开发demo 编辑:程序博客网 时间:2024/05/30 05:41

Accept 用户代理可处理的媒体类型

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  • 通知服务器用户代理能够处理的媒体类型及相对优先级

  • 可使用 type/subtype,一次指定多种媒体类型

  • 若要设置优先级,使用 q= 来额外表示权重值,用 ; 分隔。范围 0-1(可精确到小数点后 3 位),1 为最大,不指定时,默认值为 q=1.0

Accept-Charset 优先的字符集

Accept-Charset: iso-8859-5, unicode-1-1;q=0.8
  • 通知服务器用户代理支持的字符集及相对优先顺序

  • 通过 q= 来表示优先级

Accept-Encoding 优先的内容编码

Accept-Encoding: gzip, deflate
  • 通知服务器用户代理支持的内容编码及优先级

  • 通过 q= 来表示优先级

  • 主要由以下几种

    • gzip:由 GNU zip 程序生成的编码格式

    • compress:由 UNIX 文件压缩程序 compress 生成的编码格式

    • deflate:组合适用 zlib 及由 deflate 压缩算法生成的编码格式

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

Accept-Language 优先的语言

Accepte-Language: zh-cn,zh;q=0.7,en-us,en;q=0.3
  • 通知服务器用户代理能够处理的自然语言集及优先级

  • 通过 q= 来表示优先级

Authorization Web 认证信息

  • 通知服务器用户代理的认证信息

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

Expect 期待服务器的特定行为

  • 告知服务器期望出现的某种行为

  • 服务器无法理解客户端的期望作出回应而发生错误时,返回 417 Expectation Failed

  • 客户端可利用该字段写明期望的扩展

  • HTTP/1.1 规范只定义了 100-continue,等待状态码 100 的这个响应的客户端在请求时,需要指定 Expect: 100-continue

From 用户的电子邮箱地址

From: xx@163.com
  • 目的是为了显示搜索引擎等用户代理的负责人的电子邮件

  • 使用代理时,应尽可能包含该字段

Host 请求资源所在服务器

  • 告知服务器请求的资源所在互联网主机名和端口号

  • 在 HTTP/1.1 规范内,该字段是唯一一个必须被包含在请求内的首部字段

  • 单台服务器分配多个域名的虚拟主机时,服务器会先将域名转成 IP,但相同的 IP 下部署运行着多个域名,因此需要通过 Host 来明确请求的主机名

  • 若未设定主机名,直接发送空值,即 Host:

条件请求

  • 形如 If-xxx 的请求字段,都可称为条件请求

  • 服务器收到条件请求后,判断指定条件为真时,才会执行请求


If-Match 比较实体标记(ETag)

  • 实体标记 ETag 是与特定资源关联的确定值,资源更新后 ETag 也会随之更新

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

  • 可以使用 * 指定 If-Match 值,相当于不匹配,服务器会忽略 ETag 值,只要资源存在就处理请求


If-Modified-Since 比较资源的更新时间

  • 告知服务器若该字段值早于资源的更新时间,则处理请求,否则返回 304 Not Modified


If-None-Match 比较实体标记(与 If-Match 相反)

  • 字段值和资源的 ETag 值不一致时,处理该请求

  • 在 GET 或 HEAD 方法使用该字段可以获取更新的资源,与使用 If-Modified-Since 有些类似


If-Range 资源未更新时发送实体 Byte 的范围请求

If-Range: "123456"Range: bytes=5001-10000
  • 告知服务器指定的 If-Range 字段值(ETag 或时间)和请求资源的 ETag 或时间一致时,则作为范围请求处理。反之返回全部资源

  • 如果服务器资源 ETag 为 “123456”,则返回 5001-10000 范围内的资源,反之忽略这个范围,返回全部资源


If-Unmodified-Since 比较资源的更新时间(与 If-Modified-Since 相反)

  • 告知服务器,未发生更新时处理请求

  • 如果指定日期后更新了,则返回 412 Precondition Failed

Max-Forwards 最大传输逐跳数

  • 通过 TRACE 或 OPTIONS 方法,发送包含 Max-Forwards 的请求时,该字段以十进制整数形式指定可经过的服务器最大数目

  • 服务器在往下一个服务器转发请求前,会将 Max-Forwards 值减 1 后重新赋值

  • 当服务器收到 Max-Forwards 为 0 的请求时,则不再转发,直接返回响应

  • 有时代理服务器因为某些原因请求失败,客户端就无法收到响应,灵活使用该字段,当值为 0 时,服务器会立刻返回响应

Proxy-Authorization 代理服务器要求客户端的认证信息

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

  • 这是用于客户端和代理之间的认证,客户端和服务端的认证通过 Authorization 字段

Range 实体的字节范围请求

  • 服务器处理请求后,返回 206 Partial Content。如果无法处理范围请求,返回 200 OK 的响应及全部资源

Referer 对请求中 URI 的原始获取方

Referer: http://w3school.com.cn/html/index.asp
  • 告知服务器请求的原始资源的 URI

  • 客户端一般会发送该字段给服务器,但在浏览器地址栏输入 URI,出于安全性考虑,也可以不发送,因为原始 URI 的查询字符串可能含有 ID 和密码等保密信息,写进 Referer 转发给其他服务器,可能导致保密信息的泄露

TE 传输编码的优先级

TE: gzip, deflate;q=0.5
  • 告知服务器客户端能够处理响应的编码方式即优先级

  • 和 Accepte-Encoding 功能相似,但是用于传输编码

  • 还可以指定伴随 trailer 字段的分块传输编码的方式,要这样使用时,只需把 trailers 赋值给该字段,即

    TE: trailers

User-Agent HTTP 客户端程序的信息

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

  • 网络爬虫发起请求时,可能在该字段内添加爬虫作者的电子邮件地址。此外经过代理,中间也可能被添加上代理服务器的名称


参考:《图解HTTP》第6章

0 0
原创粉丝点击