HTTP状态码整理

不知道大家看到熟悉的404,是否感觉心里一慌呢,没错,这熟悉的404通常就代表着网页飞到外太空去了。那么404到底是什么呢?其实它是RFC2616中定义的HTTP状态码之一。这些状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器是正常处理了请求还是出现了错误。接下来,让我们一起了解这些状态码吧。

通常可以根据状态码的第一位,把它们分为以下几类:

只要遵循状态码的类别,即使改变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版本

----------------------------------------------------------------

以上就是关于HTTP状态码的归纳和介绍,望大家共同学习与进步。

END

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180712B1F50W00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券