202:Accepted
请求已被接受,但服务器还未对其执行任何动作。不能保证服务器会完成这个请求;这只是意味着接受请求时,他看起来是有效的。服务器应该在实体的主体部分包含对请求状态的描述,或许还应该有对请求完成时间的估计(或者包含一个指针,指向可以获取此信息的位置);
203:Non-Authoritative Information
实体首部包含的信息不是来自于源端服务器,而是来自资源的一份副本。如果中间节点上有一份资源副本,但无法或者没有对它所发送的与资源有关的原信息(首部)进行验证,就会出现这种情况;
这种响应吗并不是非用不可的;如果实体首部来自源端服务器,相应为200状态的应用程序就可以将其作为一种可选项使用;
204:No Content
响应报文中包含若干首部和一个状态行,但没有实体的主体部分。主要用于在浏览器不转为显示新文档的情况下,对其进行更新(比如刷新一个表单页面);
205:Rest Content
另一个主要用于浏览器的代码。负责告知浏览器清除当前页面中的所有HTML表单元素;
206:Partial Content
成功执行了一个部分或Range(范围)请求。客户端可以通过一些特殊的首部来获取部分或某个范围内的文档--这个状态码就说明范文请求成功了;
206相应中必须包含Content-Range、Date以及ETag或Content-Location首部;
可以通过某些重定向状态码对浏览器本地缓存的资源副本与远端服务器上的资源进行验证。比如:用来查看本地的副本是否仍为最新的,或者远端服务器上的资源是否被修改过;
下图是客户端发送了一个特殊的if-Modified-Since首部,说明会读取1997年10月之后修改过的文档。因为这个日期之后,此文档并未修改过,因此,服务器回送了一个304状态码,而不是文档的内容;
300:Multiple Choices
客户端请求一个实际指向多个资源的URL时就会返回这个状态码,比如服务器上有某个HTML文档的英语和法语版本。返回这个代码时会带有一个选项列表;这样用户就可以选择他希望使用的那一项了。
301:Move Permanently
请求的URL指向的资源已经被删除(移动到其它位置)是永久重定向,资源被永久删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;原因短语为Moved Permanently;
302:Found
与301相似,但在响应报文中通过Location指明资源现在所处临时新位置,资源不是永久删除,是临时重定向; 原因短语为Found;
303:See Other
告知客户端应该用另一个URL来获取资源。新的URL位于响应报文的Location首部。其主要目的是允许POST请求的响应将客户端定向到某个资源上去;
304:Not Modified
客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过通过此响应状态码通知客户端(带有这个状态码的响应不应该包含实体的主体部分),客户端可继续使用本地网页缓存;原因短语为Not Modified;
305:Use Proxy
用来说明必须通过一个代理来访问资源;代理的位置有Location首部给出。
很重要的一点是,客户端只是对某个特定资源来解析这条响应的;而不是对所有请求,甚至所有具有相同资源的服务器都通过这个代理进行;如果客户端错误的让代理介入了某个请求,可能会引发破坏性的行为,而且会造成安全漏洞;
306:未使用
307:Temporary Redirect
与301代码类似;但客户端应该使用Location首部给出URL来临时定位资源。将来的请求还使用老的URL;
注意:
302、303、307状态码之间存在一些交叉。这些状态码的用法有细微的区别,大部分区别都源于HTTP/1.0和HTTP/1.1应用程序对这些状态码处理方式的不同。
当HTTP/1.0客户端发起一个POST请求,并在响应中收到302重定向状态码时,它会接受Location首部的重定向URL,并向那个URL发起一个GET请求(而不会向原始请求中那样发起POST请求)。
HTTP/1.0服务器希望HTTP/1.0客户端这么做---如果HTTP/1.0服务器收到来自HTTP/1.0客户端的POST请求之后发送了302状态码,服务器就期望客户端能够接受重定向URL,并向重定向的URL发送一个GET请求;
问题出在HTTP/1.1。HTTP/1.1规范您使用了303状态码来实现同样的行为(服务器发送303状态码来重定向客户端的POST请求,在它后面跟上一个GET请求)。
为避开这个问题,HTTP/1.1规范指出,对于HTTP/1.1客户端,用307状态码取代302状态码来进行临时重定向。这样服务器就可以将302状态码保留起来,为HTTP/1.0客户端使用。
这样一来,服务器要选择适当的重定向状态码放入重定向响应中发送,就需要查看客户端的HTTP版本了。
400:Bad Request
告知客户端它发送了一个错误的请求;
401:Unauthorized
与适当的首部一同返回,在这些首部中要求客户端在访问资源之前,需要进行认证(如基于basic认证时就是401)。
402:Payment Required
保留