10状态代码定义
每个状态码描述如下,其中描述的方法(S)可以遵循和响应所需的任何信息。
10.1信息1xx
此类状态码表示临时响应,仅由状态行和可选标头组成,并由空行终止。这类状态码没有必需的头文件。由于HTTP / 1没有定义任何1xx状态码,服务器不能发送一个HTTP 1客户端1xx响应除了在实验条件。
客户端必须准备接受一个或多个1xx状态响应的一种常规响应之前,即使客户不指望100(继续)状态信息。意外的1xx状态响应可以由一个用户代理忽略。
代理人必须向前1xx响应,除非代理和客户端之间的连接已关闭,或除非代理本身要求的一代1xx响应。(例如,如果
代理在转发请求时添加一个“期望值:100”字段,然后它不需要转发相应的100(继续)响应。
10.1.1 100继续
客户机应继续其请求。此临时响应用于通知客户机已收到请求的初始部分,尚未被服务器拒绝。客户端应该继续发送请求的剩余部分,或者,如果请求已经完成,则忽略此响应。服务器必须在请求完成后发送最终响应。看到的使用作了详细的讨论与此状态代码处理8.2.3节。
10.1.2 101交换协议
服务器理解并愿意遵从客户端的请求,通过升级消息头字段(第14.42节),以更改在该连接上使用的应用程序协议。服务器将在终止101响应的空行之后立即将协议转换为响应的升级头字段定义的协议。
只有在有利于这样做的情况下,才应该交换协议。例如,切换到较新版本的HTTP对旧版本有利,在交付使用这些特性的资源时,切换到实时同步协议可能是有利的。
10.2成功的2xx
这类状态代码表明客户的请求被成功地接收、理解和接受。
10.2.1 200 OK
请求成功了。响应返回的信息依赖于请求中使用的方法,例如:
获取响应请求中发送的与请求资源相对应的实体;
头与请求的资源相对应的实体头字段在响应中发送,没有任何消息体;
张贴描述或包含行动结果的实体;
跟踪包含端服务器接收的请求消息的实体。
10.2.2 201创建
请求已经完成,并创建了一个新资源。新创建的资源可以由响应实体中返回的URI引用,其中位置标头字段提供的资源具有最具体的URI。响应应该包括一个实体,其中包含一个资源特性列表和位置,用户或用户代理可以从中选择最合适的一个。实体格式是由内容类型头字段中指定的媒体类型指定的。在返回201状态码之前,源服务器必须创建资源。如果不能立即执行该操作,则服务器应以202(接受)响应代替。
201响应可能包含ETag响应头域表示的变体标签实体的要求为刚刚创建的电流值,见14.19节。
10.2.3 202接受
请求已接受处理,但处理尚未完成。请求可能会或可能不会最终将采取行动,因为它可能是不允许在处理实际发生。没有从异步操作中重新发送状态码的工具,如。
202回应是故意不表态。它的目的是允许服务器接受对其他进程的请求(可能是只面向一天运行一次的批处理过程),而不要求用户代理与服务器的连接一直存在,直到过程完成。返回此响应的实体应该包括请求当前状态的指示,或者指向状态监视器的指针,或者用户何时可以满足请求的一些估计。
10.2.4 203非权威信息
在实体报头返回的元信息是不明确的设置为从源服务器,而是从本地或第三方复制聚集。设置可能被提出的子集或超集的原始版本。例如,包括对资源的地方标注信息可能会导致由原始服务器称为元信息的一个超集。使用此响应代码是不需要的,只有在响应为200时才合适(OK)。
10.2.5 204无内容
服务器已经完成了请求,但不需要返回一个实体,并且希望返回更新的元信息。响应可能包括新的或更新的形式在实体头信息,如果存在,应与请求的变量相关联。
如果客户端是一个用户代理,它不应该改变它的文档视图,从而导致发送请求。这种反应主要是为了让行动不会导致改变用户代理的活动文档视图发生输入,但任何新的或更新的信息应该被应用到文档中的用户代理的积极看法。
204个响应不能包含消息体,因此总是在头字段之后的第一个空行终止。
版本205内容复位
服务器已经完成了请求,用户代理应该重置文档视图,从而导致请求被发送。此响应主要是为了允许通过用户输入进行操作的输入,随后输入输入的表单,以便用户可以容易地启动另一个输入操作。响应不能包含实体。
10.2.7 206部分内容
服务器完成了资源的部分GET请求。请求必须包含一个范围标头字段(第14.35节),指示期望的范围,并且可能包括一个if范围标头字段(第14.27节),使请求有条件。
响应必须包括以下头字段:
-表示内容范围标头字段(第14.16节)
范围包括与此响应,或多重/ byteranges
内容类型,包括每个部分的内容范围字段。如果一个
内容长度头字段存在于响应中,其
值必须匹配发送的字节的实际数量
消息体。
-日期
- ETag和/或内容位置,如果头文件已发送
在对同一请求的200响应中
-如果字段值可能,过期、缓存控制和/或更改
与以前对同一响应的发送不同
变体
如果206响应是一个结果,如果范围要求用强缓存验证(见第13.3.3),响应不应包括其他实体头。如果反应是一个结果,如果范围要求用弱验证器,响应必须不包括其他实体头;这样可以防止缓存之间的实体机构和更新的标题不一致。否则,响应必须包含所有的实体标头,这些标头都将返回对同一请求的200(OK)响应。
缓存不能结合206响应缓存的内容如果与其他先前的ETag或最后修改标题不完全匹配,看到13.5.4。
不支持范围和内容范围标头的缓存不能缓存206(部分)响应。
10.3重定向3xx
这类状态码表明,为了满足请求,用户代理需要采取进一步的操作。所需的动作可以由用户代理进行,而不必与用户交互,且仅当第二个请求中使用的方法是get或头时。客户机应该检测无限重定向循环,因为这样的循环为每个重定向生成网络流量。
注意:本规范的前一版本建议
五重定向的最大。内容开发人员应该知道
可能有客户实现了这样一个固定的
限制。
10.3.1 300多种选择
所请求的资源对应于一组表示的任何一个,每一个都有其自己的特定位置,并且正在提供代理驱动的协商信息(第12节),以便用户(或用户代理)可以选择一个优选表示并将其请求重定向到该位置。
除非是头请求,响应应该包含一个实体,其中包含一个资源特性列表和位置,用户或用户代理可以选择最合适的位置。实体格式是由内容类型头字段中给定的媒体类型指定的。取决于格式和功能
可以自动执行用户代理,选择最合适的选择。但是,该规范没有定义此类自动选择的任何标准。
如果服务器具有首选的表示方式,则应该包含该位置字段中该表示的特定URI;用户代理可以使用位置字段值进行自动重定向。这个响应是可缓存的除非另有说明。
10.3.2 301永久移动
被请求的资源已经被分配了一个新的URI和任何未来的资源引用到这应该用一个返回的URI。具有链接编辑功能的客户端应该自动将请求URI的引用重新链接到服务器返回的一个或多个引用,如果可能的话。这个响应是可缓存的除非另有说明。
新的永久URI应该由响应中的位置字段给出。除非请求方法为头,否则响应的实体应该包含一个超文本超文本注释,并带有新URI的超链接。
如果响应了GET或头部以外的请求而接收到301状态码,则用户代理不能自动重定向请求,除非用户可以确认它,因为这可能会更改发出请求的条件。
注意:当自动重定向POST请求后
接收到301状态码,一些现有的HTTP / 1用户代理
将错误地将其更改为GET请求。
10.3.3 302发现
请求的资源暂时驻留在不同的URI下。由于重定向有时可能被更改,客户机应该继续使用请求URI来满足将来的请求。这种反应只缓存如果表示缓存控制或Expires头域。
临时URI应该由响应中的位置字段给出。除非请求方法为头,否则响应的实体应该包含一个超文本超文本注释,并带有新URI的超链接。
如果响应了GET或头部以外的请求而接收到302状态码,则用户代理不能自动重定向请求,除非用户可以确认它,因为这可能会更改发出请求的条件。
注意:RFC 1945和RFC 2068指定不允许客户端。
更改重定向请求的方法。然而,最
现有的用户代理实现将302视为303。
响应,在位置字段值上执行get,不管
对原始请求的方法。状态码303和307
为希望明确说明的服务器添加
客户需要某种反应。
10.3.4 303看其他
对请求的响应可以在不同的URI下找到,应该使用该资源上的get方法检索。此方法主要存在于允许激活后脚本将用户代理重定向到选定资源。新URI不是原始请求资源的替代引用。303响应必须不被缓存,但反应到二(重定向)的要求可能是缓存。
响应中的位置字段应该给出不同的URI。除非请求方法为头,否则响应的实体应该包含一个超文本超文本注释,并带有新URI的超链接。
注意:许多HTTP / 1.1用户代理不理解303。
现状。当与此类客户机的互操作性受到关注时,
可以使用302状态码,因为大多数用户代理都会作出反应。
到302的响应,这里描述的是303。
10.3.5 304不改
如果客户机执行了条件GET请求并允许访问,但文档没有被修改,服务器应该使用此状态代码进行响应。304个响应不能包含消息体,因此总是在头字段之后的第一个空行终止。
响应必须包括以下头字段:
日期,除非其不作为是以部分14.18.1要求
如果无时钟源服务器遵循这些规则,和代理和客户自己添加日期的任何反应没有收到一个(由[ ]已经指定RFC 2068,14.19节),缓存将正确操作。
- ETag和/或内容位置,如果头文件已发送
在对同一请求的200响应中
-如果字段值可能,过期、缓存控制和/或更改
与以前对同一响应的发送不同
变体
如果使用了强缓存验证得到的条件(见第13.3.3),响应不应包括其他实体头。否则(即,有条件的习惯弱验证器),响应必须不包括其他实体头;这样可以防止缓存之间的实体机构和更新的标题不一致。
如果304响应表示当前未缓存的实体,则缓存必须忽略响应并在没有条件的情况下重复请求。
如果缓存使用接收到的304响应来更新缓存条目,则缓存必须更新条目,以反映响应中给出的任何新字段值。
10.3.6 305使用代理
请求的资源必须通过位置字段提供的代理访问。位置字段给出代理的URI。收件人希望通过代理重复这一请求。305响应必须仅由原始服务器生成。
注意:RFC 2068不清楚,305是为了重定向一个
单个请求,只由原始服务器生成。不
观察这些限制会产生重大的安全后果。
10.3.7 306(未使用)
306状态代码在以前版本的规范中使用,不再使用,代码被保留。
10.3.8 307临时重定向
请求的资源暂时驻留在不同的URI下。由于重定向有时可能被更改,客户机应该继续使用请求URI来满足将来的请求。这种反应只缓存如果表示缓存控制或Expires头域。
临时URI应该由响应中的位置字段给出。除非请求方法为头,否则响应的实体应该包含一个超链接的超文本注释,该链接具有新的URI的超链接,因为许多前HTTP / 1.1用户代理不理解307状态。因此,注释应该包含用户在新URI上重复原始请求所必需的信息。
如果响应了GET或头部以外的请求而接收到307状态码,则用户代理不能自动重定向请求,除非用户可以确认它,因为这可能会更改发出请求的条件。
10.4 4客户端错误
状态代码4xx类为例,客户似乎有错。除了对头请求作出响应外,服务器应该包含一个包含错误情况解释的实体,以及它是否是临时的或永久的条件。这些状态码适用于任何请求方法。用户代理应该向用户显示任何包含的实体。
如果客户机正在发送数据,使用TCP的服务器实现应该小心,以确保在服务器关闭输入连接之前,客户机确认接收包含响应的数据包。如果客户端继续发送数据到服务器后,服务器的TCP协议栈将发送一个重置数据包到客户端,从而才能阅读和HTTP应用解释删除客户端的未确认的输入缓冲器。
10.4.1 400错误的请求
由于语法错误,服务器无法理解请求。客户机不应在不修改的情况下重复请求。
10.4.2 401未经授权
该请求需要用户身份验证。响应必须包含一个WWW验证头字段(第14.47节),其中包含适用于所请求资源的挑战。客户端可以用适当的授权头字段重复请求(第14.8节)。如果请求已包含授权凭据,则401响应表示已拒绝这些凭据的授权。如果401响应包含与前面的响应相同的挑战,并且用户代理至少已经尝试过一次身份验证,那么应该向用户展示响应中给出的实体,因为该实体可能包含相关的诊断信息。HTTP访问验证在“HTTP认证:基本和摘要访问验证”中解释(43)。
10.4.3 402付款要求
此代码保留以备将来使用。
10.4.4没有权限访问此网站
服务器理解了请求,但拒绝履行它。授权无效,请求不应重复。如果请求方法不是头,服务器希望公开为什么请求没有完成,它应该描述实体拒绝的原因。如果服务器不希望将此信息提供给客户机,则可以使用状态码404(未找到)。
10.4.5 404未找到
服务器没有找到与请求URI匹配的任何内容。没有迹象表明这种情况是暂时性的还是永久性的。如果服务器通过某种内部可配置的机制知道旧资源是永久不可用且没有转发地址的,则应该使用410(离开)状态代码。当服务器不希望确切地揭示拒绝请求的原因,或者没有其他响应时,通常使用这种状态代码。
10.4.6 405法不允许
请求行中指定的方法不允许由请求URI标识的资源。响应必须包含一个允许标头,其中包含所请求资源的有效方法列表。
406不接受单独
由请求标识的资源仅能够生成响应实体,这些内容具有不能根据请求中发送的接收头接受的内容特征。
除非是头请求,响应应包括一个实体,其中包含可用实体特性和位置的列表,用户或用户代理可以从中选择最合适的一个实体。实体格式是由内容类型头字段中指定的媒体类型指定的。根据用户代理的格式和功能,可以选择自动执行最合适的选择。但是,该规范没有定义此类自动选择的任何标准。
注意:允许HTTP / 1.1服务器返回响应
根据接收到的接收头不能接受
请求。在某些情况下,这甚至比发送一个
406响应。鼓励用户代理检查
输入响应以确定是否可接受。
如果响应是不可接受的,用户代理应该暂时停止接收更多数据,并查询用户对进一步行动的决定。
10.4.8 407代理服务器要求身份验证
此代码类似于401(未经授权),但表示客户端必须首先用代理进行身份验证。代理必须返回一个代理验证头字段(第14.33节),其中包含适用于请求资源代理的挑战。客户机可以使用适当的代理授权头字段重复请求(第14.34节)。HTTP访问验证在“HTTP认证:基本和摘要访问验证”中解释(43)。
10.4.9 408请求超时
客户机在服务器准备等待的时间内没有生成请求。客户可以在不修改的情况下重复请求。
10.4.10 409冲突
由于与资源的当前状态发生冲突,请求无法完成。此代码只允许的情况下,预计用户可能能够解决冲突和重新提交请求。响应主体应包括足够
用户识别冲突源的信息。理想情况下,响应实体将包含足够的信息以供用户或用户代理解决问题;然而,这可能是不可能的,也不是必需的。
冲突最有可能发生在对提交请求的响应中。例如,如果正在使用版本控制,并且实体被包含到与早期(第三方)请求所产生的资源发生冲突的地方,那么服务器可能会使用409响应来指示它不能完成请求。在这种情况下,响应实体可能包含一个由响应内容类型定义的格式的两个版本之间的差异列表。
10.4.11 410了
请求的资源在服务器上不再可用,并且没有已知的转发地址。这种情况预计将被视为永久性的。具有链接编辑功能的客户端应该在用户批准后删除对请求URI的引用。如果服务器不知道,或者没有确定的条件,条件是否是永久的,则应该使用状态码404(未找到)。这个响应是可缓存的除非另有说明。
410个响应主要是为了帮助Web维护的任务,通知接收方资源是不可用的,服务器所有者希望删除该资源的远程链接。这样的事件在有限的时间、促销服务和属于不再在服务器站点工作的个人的资源中是常见的。没有必要将所有永久不可用资源标记为“消失”或保留任何时间的标记——这是由服务器所有者自行决定的。
10.4.12 411长度要求
服务器拒绝接受没有定义内容长度的请求。如果在请求消息中添加一个包含消息主体长度的有效内容长度头字段,客户机可以重复请求。
10.4.13 412前提条件失败
在服务器上进行测试时,一个或多个请求头字段中给出的前提条件被评估为false。此响应代码允许客户在条件对当前资源元信息(标题字段数据),从而防止所请求的方法被应用到比预期的另外一个资源。
10.4.14 413请求实体太大
服务器拒绝处理请求,因为请求实体比服务器愿意或能够处理的要大。服务器可以关闭连接以防止客户端继续请求。
如果条件是临时的,服务器应该包含一个重试头字段来指示它是临时的,在客户端重试之后。
10.4.15 414请求URI太长
服务器拒绝服务请求,因为请求URI比服务器愿意解释的时间长。这种罕见的情况只可能发生在客户端不当将POST请求转换到一个GET长查询信息,当客户进入一个URI的“黑洞”的重定向(例如,重定向的URI前缀指向本身的后缀),或者当服务器通过客户端试图利用安全漏洞使用固定长度的缓冲区读或操纵请求一些服务器目前的攻击下。
10.4.16 415不支持的媒体类型
服务器拒绝提供请求,因为请求的实体是所请求的资源不支持所请求方法的格式。
10.4.17 416请求范围不满足
如果一个请求的服务器应该包含一系列请求标头字段返回此状态码的响应(14.35节),没有一个范围说明符值在这一领域的重叠选定当前资源的程度,并要求不包括如果范围请求标头字段。(对于字节范围,这意味着所有字节范围规范值的第一个字节的POS数大于所选资源的当前长度。)
当返回一个字节范围请求的状态代码时,响应应该包括一个内容范围实体头字段,指定选定资源的当前长度(参见第14.16节)。这种反应不是必须使用多重/ byteranges内容类型。
10.4.18 417期待失败
在期望的请求头字段(见第14.20部分)中给出的期望不能被该服务器满足,或者,如果服务器是一个代理,服务器就有明确的证据证明下一跳服务器不能满足请求。
10.5 5服务器错误
响应状态码“5”表示在何种情况下服务器知道它犯了错误或执行请求的能力。除了对头请求作出响应外,服务器应该包含一个包含错误情况解释的实体,以及它是否是临时的或永久的条件。用户代理应该向用户显示任何包含的实体。这些响应代码适用于任何请求方法。
10.5.1 500内部服务器错误
服务器遇到意外情况,阻止了它执行请求。
10.5.2 501未实现
服务器不支持实现请求所需的功能。当服务器不识别请求方法并且不能支持任何资源时,这是适当的响应。
10.5.3 502网关错误
服务器作为网关或代理,在试图满足请求时从它访问的上游服务器接收到无效的响应。
10.5.4 503服务不可用
由于暂时超载或维护服务器,服务器目前无法处理请求。这意味着这是一个暂时的条件,在一些延迟之后会得到缓解。如果已知,则延迟长度可以在报头后重试。如果未重试,则客户端应处理响应,如500响应。
注:503状态码的存在并不意味着
服务器在超载时必须使用它。有些服务器可能希望
拒绝连接。
10.5.5 504网关超时
服务器作为网关或代理,并没有从URI(如HTTP、FTP、LDAP)或其他辅助服务器(如DNS)所指定的上游服务器那里获得及时响应,在试图完成请求时需要访问该服务器。
注意:注意实施者:一些部署代理是众所周知的
返回400或500时,DNS查询超时。
10.5.6 505 HTTP版本不受支持
服务器不支持或拒绝支持请求消息中使用的HTTP协议版本。服务器指示它不能或不愿意使用与客户端相同的主要版本完成请求,如第3.1节所述,与此错误消息不同。响应应该包含一个实体,描述为什么不支持该版本以及该服务器支持的其他协议。