HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。
可以把状态码分为以下几类:
范围 | 类别 | 原因短句 |
---|---|---|
1XX | 信息性状态码 | 接受的请求正在处理 |
2XX | 成功状态码 | 请求正常处理完毕 |
3XX | 重定向状态码 | 需要进行附加操作以完成请求 |
4XX | 客户端错误代码 | 服务器无法处理请求 |
5XX | 服务器错误状态码 | 服务器处理请求出错 |
只要遵循状态码的类别,即使改变RF2616中定义的状态码,或者服务端自行创建状态码都是没有问题的。
接下来介绍具有代表性的状态码。
1XX信息
100:Continue,收到部分请求,应该继续请求
101:Switch protocols,客户要求服务器根据请求转换HTTP协议版本
2XX成功
200:OK,服务器正常处理请求
201:Created,提示知道新文件的URL
202:Accepted,请求已经接受,但没有完成处理
203:Non-Authoritative Information,服务器成功处理事务,只是实体包含的信息可能不是来自原始服务器,而是来自资源的副本
204:No Content,服务器接受的请求以成功受理,但是返回的响应报文中不包含实体的主体部分,另外,也不允许返回任何实体的主体
205:Reset Content,没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容
206:Partial Content,客户端进行了范围请求,而服务器成功执行了这部分的GET请求
3XX重定向
300:Multiple Choices,客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明
301:Moved Permanently,永久重定向,该状态码表示请求的资源已被分配了新的URI
302:Found,临时重定向,客户端可以使用Location首部给出的URL对资源进行临时定位
303:See Other,由于请求对应的资源存在另一个URI,应使用GET方法定向获取请求资源
304:Not Modified,客户端发送附带条件的请求时,服务器端允许请求访问资源,但发生条件没有满足条件(服务器资源未改变,可直接使用客户端未过期的缓存)
305:Use Proxy,通过代理访问资源,代理的位置在Location首部中被提及
307:Temporary Redirect,临时重定向,与302有相同含义。但307会遵照浏览器标准,不会从POST变成GET,302不一定
4XX客户端错误
400:Bad request,请求报文存在语法错误
401: Unauthorized,发送的请求需要有通过HTTP认证的认证信息。另外若之前已经进行过1次请求,则表示用户认证失败
403:Forbidden,对资源的访问被服务器拒绝了
404:Not Found,服务器上没有找到请求资源。除此之外,也可以在服务器拒绝请求且不想说明理由时使用
405:Method Not Allowed,不允许使用的方法,请求中有一个不支持的方法,响应中应该包含一个Allow首部,已告知客户端所请求的资源支持的方法
406:Not Acceptable,无法接受,指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容
407:Proxy Authentication Required,类似于401,表示客户要进行代理认证
408:Request Timeout,在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求
409:Conflict,发出的请求在资源上造成了一些冲突,通常与PUT请求有关
410:Gone,所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而 404表示由于未知的原因文档不可用
411:Length Require,要求长度指示,服务器要求请求报文中包含Content-Length首部,没有该首部则返回该代码
412:Precondition Failed,前提条件失败,客户端发起条件请求,服务器无法满足某个条件,则返回该代码
413:Request Entity Too Large,目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头
414:Request URI Too long,URI太长
415:Unsuportted Media Type,不支持的媒体类型
416:Requested Range Not Satisfiable,服务器不能满足客户在请求中指定的Range头
417:Expectation Failed,服务器遇到未知情况,不能完成客户的请求
5XX服务端错误
500:Internal Server Error,服务器端在执行请求时发生错误。也有可能是Web应用存在的bug或某些临时的故障
501:Not Implemented,服务器无法满足客户端请求的某个功能
502:Bad Gateway,服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答
503:Service Unavaiable,服务器暂时处于超负荷状态或者正在进行停机维护,现在无法处理请求。如果事先得知解除以上情况所需要的时间,最好写入Retry-After首部字段再返回给客户端
504:Gateway Timeout,由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。,与408类似
505:HTTP Version Not Supported,服务器不支持请求的HTTP版本