HTTP头(HTTP Header)详解


HTTP 协议被设计得非常强大,但很多网络应用都没有利用这些强大之处。比如缓存和 HTTP 方法。HTTP 为资源的增删改查分别提供了 PUT,DELETE,POST,GET 等方法,确没有人用。所 以,最近兴起的 Restful 只是对优化 web 架构、充分利用 HTTP 协议的能力的一个回 归。下 面是一些 HTTP 协议的概述: 消息:HTTP 协议中顶级数据单位,使用 HTTP 协议通信的机器之间来回发送的数据包 实体:只出现在有消息体的消息中。它按照实体 header 定义的格式和编码进行传输。 方法: OPTIONS :客户端查询服务器对与某 URL 允许的通信选项 GET :从服务器获取 URL 对应的资源 HEAD :除了服务器响应中不能包含消息体,该方法与 GET 一样。用于只需少数元信息的情 况 POST :被设计用来注解、修改 URL 所对应的资源 PUT :被设计用来修改或创建资源。当 URL 对应的资源存在时,则提交的作为新版本,否 则新建资源 DELETE :被设计用来删除 URL 对应的资源 TRACE :主要用来测试。服务器将最终接收到的请求本身发送回来,作为客户端诊断依据 CONNECT :保留的方法名,用于代理切换隧道 header 特殊参数: q :在大多的各种 header 值中,都可以看到一个名为 q=0.2、q=0.7 之类的参数。因为发送 header 主要是一个和服务器的协商过程,所以能允许 的选项一般不只一个,但具体哪个优 先呢?这就需要为一些选项制定权重值。q 参数的值是一个从 0 到 1 的浮点数,默认是 1, 为 0 表示客户端无法接收,小数点后 不能超过 3 位。另外,header 的多个值之间用逗号分 隔而不是分号。比如这个 header:Accept:audio/*;q=0.2,audio /basic,这表示客户端告诉服 务器“我最喜欢的是一个 audio/basic 类型的音频(因为它没有设置 q 参数,默认是 1),但如 果没有,给我一个任 意类型(audio/*)的音频也行”。当然,这只是 q 参数一个比较简单的应 用。 常规 header : Cache-Control :用于指出请求/响应链上所有缓存必须服从的指令,它必须具有穿透各代理 和网关的能力。HTTP1.0 可能不支持该 header 和 Pragma:no-cache。 Connection :允许客户端指出希望特定连接的选项,且禁止由代理在将来的连接中通讯 Date :表示消息发生的日期和时间,与 RFC 822 中的 orig-date 语义一致 Pragma :用来包括实现特定的指令,可能应用到请求/响应链上所有接收方 Trailer :指出给出的头部域集合在以 chunked transfer-coding 编码的消息的尾部中存在 Transfer-Encoding :指出应用什么类型的转换到消息主体上,与 content-coding 不同,这不 是指定实体的属性而是消息的 Upgrade :允许客户端指出其支持的其他通讯协议,切愿意使用之,若服务器发现切换是可 行的,必须在响应中回 101 Via :必须由网关或代理来指出请求中的 UA 和服务器、以及在响应中的原始服务器和客户 端的中间协议和接收方。用于跟踪消息转发,避免请求循环 Warning :用户携带关于消息的状态和转换的额外信息,可能不在消息中反映。一般用于警 告应用到消息实体上的缓存操作或转换缺少语义透明度 请求 header: Accept :客户端指出响应可以接受的媒体类型 Accept-Charset :客户端指出响应可以接受的字符集 Accept-Encoding :客户端指出响应可以接受的字符编码 Accept-Language :客户端指出允许的语言 Authorization :客户端在受到 401 后,需要向服务器标明身份,包括此 header 即可 Expect : 客户端指出要求的特殊服务器行为。若服务器无法满足,可以返回 417 From : Host : 客户端指出要请求的资源的因特网主机和端口号 If-Match : 用于与方法一起使其条件化 If-Modified-Since : 用于方法使其条件化,如果请求的变量在本域指定的时间从来不曾修改过, 则实体将不会从服务器返回,改为 304 If-None-Match : 用于与方法一起使其条件化 If-Range : 用于与方法一起使其条件化 If-Unmodified-Since : 用于与方法一起使其条件化,如果请求的资源自 header 值时间以来未 改变,则服务器执行该请求 Max-Forwards : 提供某种机制,TRACE 和 OPTIONS 方法用来限制可以转发给下个入界服务器 代理或网关的数量,相当于客户端跟踪请求链 Proxy-Authorization : 允许客户端向代理标识自己,该代理需要认证 Range : 字节范围,可以指定单个实体中单个字节范围或范围集 Referer : 允许服务器为感兴趣的资源、日志、优化缓存等生成向后链接清单 TE : 指出愿意在响应中接受任何扩展的 transfer-coding User-Agent : 包含发起请求的用户代理(浏览器和 OS)的信息 响应 header: Accept-Ranges :服务器指出对请求的资源可接受的范围,可以是字节数或 none Age :HTTP 使用改 header 来传输从缓存服务器获取时的响应消息的估计年龄,是缓存服务 器估计从响应产生或被原始服务器重新证实以来的总时间 ETag :提供所请求的实体标签的当前值 Location :用来重定向接收方到非 URI 的位置来完成请求。对于 201,Location 是由请求创 建的新资源的标识 Proxy-Authenticate :该 header 必须作为 407 响应的一部分,指出认证方案和可应用到代理 的 URI 上的参数 Retry-After :能与 503 响应一起用于指出希望该服务对客户端可以维持多久, Server :指出服务器使用的软件信息 Vary : WWW-Authenticate :必须包括在 401 中,值至少有 challenge 组成,它指出认证方案和可 应用到 URI 的参数 实体 header: Allow :客户端指出对 URI 的资源允许的方法 Content-Encoding : 用作对 media-type 的修饰符,其值将必须应用到实体 body 上的额外内容 编码。主要用来允许压缩而不丢失下层媒体类型标识 Content-Language : 客户端指出自己所选的语言,指出目标观众对所封装实体的自然语言。 这可能与实体 body 内所有语言相同 Content-Length :指出实体 body 按十进制数的字节流的尺寸 Content-Location :如果实体能从独立于请求 URI 的位置访问,则服务器可以提供该实体自 己的位置 Content-MD5 :是实体 body 的 MD5 摘要,以便提供端到端的完整性检查 Content-Range :与实体 body 的一部分一起发送,用来指定该部分 body 应用到全部 body 的哪个地方 Content-Type :指出发送给接收方的实体 body 的媒体类型,媒体类型参见 IANA Expires :指出响应被认为过期的日期/时间 Last-Modified :指出原始服务器认为该变量最后修改的日期和时间,确实意思取决于原是 服务器的实现和资源的属性。对文件,可能只是文件系统内最后修改时间 extension-header : 状态码: 100 : Continue 101 : Switching Protocols 200 : OK 201 : Created 202 : Accepted 203 : Non-Authoritative Information 204 : No Content 205 : Reset Content 206 : Partial Content 300 : Multiple Choices 301 : Moved Permanently 302 : Found 303 : See Other 304 : Not Modified 305 : Use Proxy 307 : Temporary Redirect 400 : Bad Request 401 : Unauthorized 402 : Payment Required 403 : Forbidden 404 : Not Found 405 : Method Not Allowed 406 : Not Acceptable 407 : Proxy Authentication Required 408 : Request Time-out 409 : Conflict 410 : Gone 411 : Length Required 412 : Precondition Failed 413 : Request Entity Too Large 414 : Request-URI Too Large 415 : Unsupported Media Type 416 : Requested range not satisfiable 417 : Expectation Failed 500 : Internal Server Error 501 : Not Implemented 502 : Bad Gateway 503 : Service Unavailable 504 : Gateway Time-out 505 : HTTP Version not supported
还剩3页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 16 金币 [ 分享pdf获得金币 ] 2 人已下载

下载pdf

pdf贡献者

gmtstu

贡献于2011-11-04

下载需要 16 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf