1字头(消息)
这一类的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于http/1.0协议中没有定义任何1XX状态码,所以除非在某些实验条件下,服务器禁止向此类客户端发送1XX响应。
100 Continue
客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。
101 Switching Protocols
服务器已经理解了客户端的请求,并将通过upgrade消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在upgrade消息头中定义的那些协议。
只有在切换新的协议更有好处的时候,才应该采取此类措施。
2字头(成功)
这一类的状态码,表示请求已经成功被服务器接收,理解并接受
200 ok
请求已成功,请求锁希望的响应头或数据体将随此响应返回。
201 created
请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其url已经随location头信息返回。加入需要的资源无法及时建立的话,应该返回202
202 accepted
服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。在异步操作的场合下,没有比发送这个状态码更方便的做法了。
3字头(重定向)
这类状态码代表需要客户端采取进一步的操作才能完成请求。通常这类状态码表示重定向,在本次响应的location域中指明。
**当且仅当后续的请求所使用的方法是get或者head时,浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。而且客户端应当自动检测无限循环重定向(例如:a-b-c-a),因为这会导致服务器和客户单大量不必要的资源消耗。按照http/1.0的协议标准规范建议,浏览器不应自动访问超过5次的重定向。
300 multiple choices
被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息,用户或者浏览器能够自行选择一个首选的地址进行重定向。
除非这是一个head请求,否则该响应应该包括一个资源特性及地址的列表的实体,以便用户或浏览器从中选择一个最合适的重定向地址。这个实体的格式由消息头中content-type定义的格式所决定。浏览器可能根据响应的格式及浏览器自身的能力,自动做出最合适的选择。
如果服务器本身已经有了首选的回馈选择,那么在location中应该指明这个回馈的url,浏览器可能会将这个location值作为自动重定向的地址。
301 moved permanently
被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个uri之一。如果可能,拥有连接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。
新的永久性的uri应该在响应的location中返回。
如果这不是一个get或者head请求,浏览器禁止自动进行重定向,除非得到用户的确定,因为请求的条件可能已经发生变化。
注意:对于某些使用http/1.0协议的浏览器,当它们发送的post请求得到了一个301响应的话,接下来的重定向请求将会变成get方式。
302 move temporarily
请求的资源临时从不同的uri响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。
同样,如果这不是一个get或者head请求,那么浏览器禁止自动进行重定向,除非得到用户的确定,因为请求的条件可能已经发生变化。
304 not modified
如果客户端发送了一个带条件的get请求且该请求已被允许,而服务器文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。
该响应必须包含以下的头信息:
data:
expires:
304下浏览器应使用本地缓存。
305 use proxy
被请求的资源必须通过指定的代理才能被访问。location域中给出指定代理所在uri的信息,接收者需要重复发送一个单独的请求,通过这个代理才能访问相应资源。只有原始服务器才能建立305响应。
4字头(请求错误)
这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。
400 bad request
1:语义错误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
2:请求参数有误。
401 Unauthorized
当前请求需要用户验证。该响应必须包含一个适用于被请求资源的www-authenticate信息头用以询问用户信息。客户端可以重复提价一个包含恰当的authorization头信息的请求。如果当前请求已经包含了authorization证书,那么401响应代表着服务器验证已经拒绝了那些证书。
403 Forbidden
服务器已经理解请求,但是拒绝请求它。与401不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。如果这不是一个head请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内描述拒绝的理由。当然服务器也可以返回一个404响应,如果它不希望让客户端获得任何信息。
404 Not Found
请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时性的还是永久性的。其实404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他合适响应可用的情况下。但是出现404还是最有可能是服务器端没有这个页面。
405 Method Not Found
请求行中指定的请求方法不能被用于请求相应资源。该响应必须返回一个allow头信息用以表示出当前资源能有接受的请求方法的列表。
鉴于put,delete方法会对服务器上的资源进行写操作,因而大部分的网页服务器都不支持或者在默认配置下不允许上叙请求方法,对于此类请求均会返回405错误。
5字头(服务器错误)
这类状态码代表了服务器在处理请求的过程中有错误或者异常。服务器一般包含一个解释当前错误已经这个状况是临时的还是永久的解释信息实体。
500 Internal Server Error
服务器遇到了一个未曾预料的状况,导致它无法完成对请求的处理。一般是源代码有问题。
502 Bad Gateway
作为王冠或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 Service Unavailable
由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,而且会在一段时间后恢复正常。如果能够预计延迟时间,那么响应中可以包含一个retry-after头用以表明这个延迟时间。如果没有给出这个retry-after头信息,那么客户端应当以处理500响应的方式处理它。
注意:503状态码的存在并不意味着服务器在过载的时候必须要使用它。某些服务器只不过希望拒绝客户端的连接。
504 Gateway Timeout
作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器收到响应。
网友评论