RFC 2616 Http/1.1 1999年6月 5.1请求行 ......28 511方法... 28 512请求URI... 28 5.2请求定位的资源 53请求头部域 30 6呵 30 61状态行 6.1.1状态码和原因短语......... ...............31 62响应头部域 ......32 7实体... 33 7.1实体头部域 72实体上体 33 721类型........................... 34 722实体长度... 34 8连接... 8.1水久连接 ..................34 8.1.1目的... 4 8.1.2全面操作............... ,着 ...............35 8.1.2.1协商 ...............35 8.1.2.2管道... 8.1.3代班服务器 36 8.14实践考虑... 36 8.2消息传输要求...... 82.1永久连接和流控...... 37 8.2,2监视连接的错误状态消息 8.23使用100( Continue)状态 ...37 824服务器提前关闭连接的客房端行为 9方法定义...... 39 91安仝和等效方 91.1安全方法 91.2等效方法 ............39 9.2 OPTIONS...... 9. GET 9.4HEAD........................... 9.5 POST. 9. Put 42 9.7 DELETE...... ...42 9. 8 TRACE 43 9.9 CONNECT............ 43 10状态码定义 43 10.1信息类1xx ..................43 10.1.1100 Continue...... 44 10.1.2 101 Switching Protocols 102成功类2xx... 44 Fielding等 标准路线 [3页] RFC 2616 Http/1.1 1999年6月 102.1200OK ...44 10.2.2 201 Created 10.2.3202 Accepted... ...44 10.2 4203 Non-Authoritativc Information 10.2.5204 No Content......... 10.2.6 205 Reset Content 10.2.7 206 Partial Content 10.3重定向类3xx... ....................................46 10.3.1 300 Multiple choices . ... 10.3.2301 Moved Permanently......... ...46 10.3.3302 Found ...47 10.3.4303 Scc other 47 10.3.5304 Nol Modilied................................. 103.6305 Use Proxy......... 48 10.3.7306(没用) 48 10.3.8 307 Temporary redirect ...........................48 104客户端错误类4xx 49 10.4.1400 Bad Request...... ,着 49 10.4.2401 Unauthorized............ ..................49 10.4.3402 Payment required...... 1044403 Forbidden... ...49 10.4.5 404 Not found 49 10.4.6 405 Method not allowed... 10.4.7406 Not Acceptable............... 10.4.8407 Proxy Authentication Required 10.4.9 408 Request Timeout 10.4.10409 Conflict.............................. 10.4.11410 50 10.4.12 411 Length Required ...51 10. 412 Precondition Failed ....... 10.4.14 413 Request Entity too la 51 10.4.15 414 Request-URI ToO Long 51 10. 4.16415 Unsupported Media lype 104.17416 Requested range not satisfiable...... 10. 4.18417 Expectation Failed 10.5服务器错误类5xx...... 52 10.5.1 500 Internal Seryer error ...52 10.5.2 501 Not Implemented 10.53502 Bad gateway... 10.5.4503 Service unavailable. .. 10.5.5 504 Gateway timeout 10.5.6505 Http Version Not supported 11访问认证... 2内容协商 Fielding等 标准路线 [4页] RFC 2616 Http/1.1 1999年6月 1服务器驱动协商 53 12.2代理驱动协商...... 123透明协商 13HTTP缓存 13.1.1止确缓存 56 13.1.2警告.................. 56 13.1.3缓存控制机制 13.1.4显式用户代珄警告 13.1.5规则和警告的例外 58 13.1.6客户端控制行为 ......58 13.2截止模型... 13.2.1服务器指定截止 58 13.22启发式截止... 13.2.3年龄计算-............ ....................................59 132.4截止计算 60 13.2.5无岐义截止值 .....................61 13.2.6无岐义多次响应 133证实模型...... 13.3.1最后修改日期... ...........................62 13.32实体标签缓存证言... 13.3.3弱和强让言 ...63 13.34使用实体标签和最后修改日期的规则... ...64 13.3.5非证实条件 134可缓存响应 66 13.5从缓存构造响应 13.5.1端到端和跳对珧头部...................................................67 13.52非可修改头部......... 67 13.5.3组合头部...... 13.54组合字节范围 69 136缓存协商响应 13.7共亨或非共亨缓存 .........70 13.8错误或不完整响应的缓存行为... 13.9GET和HEAD的副作用... 13.10更新或删除后无效......... 70 13.11强制写通 13.12缓存替换 13.13历史清单 l4头部域定义 72 14.1 Accept......... 14.2 Accept-Charset 74 14.3 Accept- ncoding......... 4 14. Accept-language .........75 14.5 Accept- Ranges... 76 14. Age .........76 Fielding等 标准路线 [5页] RFC 2616 Http/1.1 1999年6月 14.7 Allow......... 77 14.8 Authorization... 77 14.9 Cache- Control......... ......78 149.1什么可缓存 1492缓存可存储什么...... ......80 14.9.3基本截止机制的修改 1494缓存重证实和重载控制......... 14.95no- Trans lorn指令 ........................83 14.9.6缓存控制扩展..................... 4 14.10 14. 11 Content-Encod 14.12 Contcnt-Languagc 86 14.13 Content-Length 86 14.14 Content-Location......... ...87 14.15 Content-MD 87 14.16 Content-Range...... 88 14.17 Contcnt-Type 14.18Date.............................. ,着 鲁, 14.18.1无时钟原始服务器实施... ...............91 14.19 Elag 14.20 Expecl 91 14.21F 92 14.22 From 14.23H 14.24 If-Match 14.25 IC-Modified-Since. 94 14.26If- None-Match............... 14.27 If-Range ...96 14.28 If-Unmodified- Since............ 7 14.29 Last-Modified 97 14.30 Location............... 14.31 Max-Forwards 14.32 Pragma... ...99 14.33 Proxy- Authenticate.................. ,:,.,. 0 14.34 Proxy-Authorization l00 14.35 Range........................... 14.35.1字节范闱...... 100 14.352范围获取请求... 101 14.36 Referer............... 102 14.37 Retry-After 102 14.38 Server............ 14.39TE............ 14.40 Trailer 14.41 Transfer -Encod 104 Fielding等 标准路线 [6页] RFC 2616 Http/1.1 1999年6月 1442Up 14.43 User-Agent l06 14.44Vary... 106 14.45Via...... 14.46 Warning ...108 14.47 WWW-Authenticate ......109 5安全考虑 110 5.1个人信息... 110 15.1.1滥用服务器日志信息.................. 110 15.1.2传输敏感信息...... ............110 15.1.3在UR中编码敏感信息...... 111 15.14与Acpt头部有关的策略问题... 152基」文件和路径名的攻击 153DNS欺骗...... 112 15.4 Location头部和欺骗... ......112 15.5 Content-Disposition问题.......................................112 156认证证书和空闲客户端...... 112 15.7代理和缓仔......... ....................................113 157.1对代理的拒绝服务攻击............ ..................113 16感谢 113 17参考资料 18作者地址 ...119 19附求...... ..................120 19.1因特网媒体类型message/http和application/http ......123 19.2因特网媒体类型 multipart/byteranges l21 193容错应用 122 194HTTP实体与RFC2045实体的区别................................................123 19.4. I MIME- Version... ...123 19.42转换到规范形式 123 194.3转换日期格式...... l23 1944 Content- Encoding简介 ............124 9.4.5 E Content-Transfer-Encoding 124 194.6 ransfer- ncoding简介 ...124 19.4.7 MHTML和行长度限制..................... .....................125 9.5附加特性......... 19.5.1 Content-Dispositi 125 19.6与前版兼容 ·126 19.6.1对HIIP/1.0的修改 126 196.1.1改变为简单多主贞服务器和保存IP地址 .........126 19.6.2与HTP/0持久连接兼容 127 196.3对RFC2068的修收 127 0完整版权声明... ·129 0.1感谢 21索引... 129 Fielding等 标准路线 [7页] RFC 2616 Http/1.1 1999年6月 22翻译选择 22翻译说明... ............129 222BNF语法符号名 ...130 22.3特殊词汇...... ...130 22.4规沱要求词汇...... 130 22.5其它词汇............... ......131 1序言 1.1目的 超文本传输协议(HTTP)是分布式、协作的、超媒体信息系统的应用层协议。HTT 凵经首先」1990年被WWW全球信息使用。HTP的第一个版木,引用为HTPO.9,是跨 因特网的传输原始数据的简单协议。HTTP10,由RFC1945[6定义,改善的协议允许消息 按MIME类似消息的格式,包含所传输数的元信息及对请求响应的语义上的修改者。然而, HTTP/1.0没有充分考虑分层代理、缓存、永久连接需求、或虚拟主机的影响。进而,自称 为“ Http/i0”的非完整实现应用程序的增殖已经需要协议的改版,为了两个通迅应用程序 相互判断其貞实的能力。 本规范定义的协议作为“HITP/1.1”引用。该协议包括比HIP10更加米历的要求, 为了保证可靠实现其特性 实践信息系统需要比简单获取,包括查找、前端更新、和注解更多的功能性。HTTP允 许开方的方法集和头部来表示请求的口的[47]。它基于由统一资源标识符(URI)[3]中提供 的参考规则,作为定位(URL)[4或命名(URN)[20],为表示方法应用的资源。消息按照 与多目的因特网邮件扩展(MIME)[7]中定义的因特网邮件相似的格式传输。 HTP还用作用广代理和代理网关到其它因特网系统,包括由SMTP[16]、NNTP[13] FTP[18]、Gopher[2]、和wAS[10]支持的系统,间通迅的通用协议。通过该方式,HTTP 允诈从不同的应用访问基本超媒体资源。 12要求 在本文中的关键字【必须】、【止】、【要求】【将要】、【不要】、【应该】【不该】、【推 荐】、【可选】按RFC219[34]的描述来解释。 实现不是一致的,如果它的实现不能满足一个或多个【必须】或【要求】级的协议要求。 满足所有【必须】或【要求】级和所有【应该】级办议要求的实现被称为“无条件一致” 满足所有【必縯】级协议要求,但不满足全部【应该】协议要求的实现被称为“有条件一致” 1.3术语 本规范使用大量的术语米表示参与到HIP通迅中拌演角色和与HIP通迅的对象。 Fielding等 标准路线 [8页] RFC 2616 Http/1.1 1999年6月 连接 建立在要通迅的两个程序间的传输层虚电路 消息 HTTP通迅的基木单元,由匹蓖4节中所定义语法的结构化八位组序列 组成,并通过连接传输。 请求 HTTP请求消息,如5节中所定义。 HTTP响应消息,如6节中所定义。 资源 网络数据对象或服务,可通过URI标识,如3.2节中所定义。資源可以 有多种表小(如,多种语言、数据格式、大小、和精度)或以多种其它 方式。 实体 作为请求或响应负载传输的信息。实体由以实体头部域形式的元信息及 实体主体形式的内容组成,如7节中描述 表述 包含在与内容协商有关的响应中的实体,如12节所述。可能存在与特 定响应状态相关的多种表述。 内容协商当服务请求时,选择适当表述的机制,如12节所述。任何响应中的实体 表述都可能协商(包括错误响应)。 变量 在任何给定时刻与某个资源相关的个或多个衣述。每个这种表述称为 “变量”。使用术语“变量”并不意味着该资源与内容协商相关, 客户端 建立连接以发送请求的程序。 用户代理发起请求的客户端。经常是浏览器、编辑器、蜘蛛(网游机器)、或其它 终聋用户工具。 服务器 接受连接,以使通过回送响应来服务请求的应用程序。任何给定的程序 都能够成为客户端和服务器,我们使用该术语只是引用特定连接的稈序 执行的角色,而不是通常意义上的程序能力。同样,任何服务器可以作 为原始服务器、代理、网关、或隧道,基于每个请求的属性来交换行为。 原始服务器提供存储或将创建的资源的服务器 代理 种中间程序,既作为服务器,又作为客户端,目的是按其它客户端的 行为作出请求。请求在内部服务或传递它们,进行可能的翻译,到其它 服务器。代理【必须】实现所有本规范的客户端和服务器要求。“透明代 理”是这种代理,除其所需的代理认证和标识以外,它不修改请求或响 应。“非透明代理”是一种代理,即它要修改请求或响应,为了给用户 代理提供一些服务,如组注解服务、媒体类型转换、协议变形、或匿名 过滤器。除了对透明或非透明行为明硝规定外,HTTP代理需求要应用 Fielding等 标准路线 [9页] RFC 2616 Http/1.1 1999年6月 到这两种代理上。 网关 种作为一些其它服务器的媒介服务器。与代理不同,代理接受对所请 求资源的请求,如同自己是原始服务器一样;请求客户端可能并不清楚 它止与网关通迅。 隧道 一种媒介程序,作为两个连接间的盲目接力者。一旦激活,隧道就不被 认为是HTTP通迅的一部份,虽然隧道可能已经通过HTP请求被初始 化了。隧道将停止工作,当两端接力的连接都关闭时。 缓存 种在其本地存储响应消息程序和控制它的消息存储、获取及删除行为 的子系统。缓存存储可缓存响应,为了减少响应时间和将来相同请求量 对网络带宽消费量。任何客户端或服务器都可以包括缓存,尽管缓存不 能被作为隧道的服务器使用。 可缓存 如果缓存允许存储响应消息的一份拷贝,以便用来凹复后序的请求,则 该响应是可缓存的。判断HTP响应缓存性的规则在13节中定义。即使 如果资源是可缓存的,关于缓存能够为特殊请求使用缓仔的拷贝也存在 额外的约束。 第一手 响应是第一手的,当它直接从原始服务器来,没有不必要的延迟,可能 通过一个或多个代理。响应还也是第一于的,当它已经直接被原始服务 所证实 清楚截止时间原始服务器想要缓存没有经过进一步证实下不应该返回其实体的时间。 启发截止时间缓存指定的截止时间,当没有清楚截止时间可用时 年龄 响应的年龄是原始服务器发送它以来,或它成功被原始服务器所证实的 时间。 更新周期4成响应和它截止时间之间的时间长度。 更新的 响应是更新的,如果它的年龄没有超过其更新周期。 过期的 响应是过期的,如果它的年龄已经超过其更新周期 语义透明度缓存以与特殊响应有关的“语义透明度”方式的行为,当它影响到请求 客户端和原始服务器时,除了可改善性能。当缓存是语义透明的时,缓 存收到几乎相同的响应(除了跳对跳头部),即它将收到其请求已经直接 被原始服务器处埋过的响应。 证言 协议元索(如实体标签或最终修改时间),用于发现一个缓存条目是否是 实体的等价拷贝。 Fielding等 标准路线 [10页]