前端基础:HTTP 状态码详解

HTTP 状态码详解

1xx(信息类):表示接收到请求并继续处理浏览器

100 客户端应当继续发送请求。这个临时响应是用来通知客户端他的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者若是请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。

101 服务器已经理解了客户端的请求,并将经过upgrade消息头通知客户端采用不一样的协议来完成这个请求。在发送这个响应最后的空行后,服务器将会切换到在upgrade消息头中定义的那些协议。只有在切换新的协议更有好处的时候才应该采起此类措施。例如,切换到新的HTTP版本比旧版本更有优点,或者切换到一个实时同步的协议以传送利用此类特性的资源。

2xx(相应成功):标识动做被成功接收、理解和处理缓存

200 请求已经成功,请求所但愿的响应头或数据体将随此响应返回。

201 请求已经被实现,且又一个新的资源已经以据请求的须要而创建,且其URI已经随Location头信息返回。若是须要的资源没法及时创建的话,应当返回"202 Accepted"。

202 服务器已接受请求,但还没有处理。正如它可能被拒绝同样,最终该请求可能会也可能不会被执行。在异步操做的场合下,没有比发送这个状态码更方便的作法了。返回202状态码响应的目的是容许服务器接受其余过程的请求(例如,某个天天只执行一次的基于批处理的操做),而没必要让客户端一直保持与服务器的链接直到批处理操做所有完成。在接受请求处理并返回202状态码的响应应当在返回的实体中包含一些指示处理当前状态的信息,以及指向处理状态监视器或状态预测的指针,以便用户可以估计操做是否已经完成。

203 服务器已经成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的肯定集合,而是来自本地或者第三方的拷贝。当亲的信息多是原始版本的子集或超集。例如,包含资源的元数据可能致使原始服务器知道元信息的超集。使用此状态码不是必须的,并且只有在响应不使用此状态码便会返回200 OK的状况下才是合适的。

204 服务器成功处理了请求,但不须要返回任何实体内容,而且但愿返回更新了的元信息。响应可能经过实体头部的形式,返回新的或更新后的元信息。若是存在这些头部信息,泽应当与所请求的变量相呼应。若是客户端是浏览器的话,那么用户浏览器应保留发送了该请求的页面,而不产生任何文档视图上的变化,即便按照规范新的或更新后的元信息应当被应用到用户浏览器活动视图中的文档。因为204响应被禁止包含任何实体,所以它始终以消息头后的第一个空行结尾。

205 服务器成功处理了请求,且没有任何返回内容。可是与204响应不一样,返回此状态码的响应要求请求者重置文档视图。该响应主要是被用于接受用户输入后,当即重置表单,以便用户可以轻松地开始另外一次输入。与204响应同样,该响应也被禁止包含任何消息体,且以消息头后的第一个空行结束。

206 服务器已经成功处理了部分GET请求。相似于FlashGet或迅雷这类HTTP下载工具都是使用此类响应实现断点续传或将一个大文档分解为多个下载段同时下载。该请求必须包含Range头信息来指示客户端但愿获得的内容范围,而且可能包含If-Range来做为请求条件。响应必须包含以下的头部域:
Content-Range 用以指示本次响应中返回内容的范围;若是是Content-Type为multipart/byteranges的多段下载,则每一multipart段中都应包含Content-Range域用以指示本段的内容范围。假如响应中包含Content-Length,那么它的数值必须匹配它返回的内容范围的真实字节数。

3xx(重定向类):为了完成指定的动做,必须接受进一步处理服务器

300 被请求的资源有一系列可供选择的回馈信息,每一个都有本身特定的地址和浏览器驱动的商议信息。用户或浏览器可以自行选择已给首选的地址进行重定向。除非这是一个HEAD请求,不然该响应应当包括一个资源特性及地址的列表实体,以便用户或浏览器从中选择最合适的重定向地址。这个实体的格式由Content-Type定义的格式所决定。浏览器可能根据响应的格式以及浏览器自身能力,自动作出最合适的选择。若是服务器自己已经有了首选的回馈选择,那么在Location中应当指明这个回馈的URI;浏览器可能会将这个Location值做为自动重定向的地址。此外,除非额外指定,不然这个响应也是可缓存的。

301 被请求的资源已被永久移到新位置,而且未来任何对此资源的引用都应该使用本响应返回的若干个URI之一。若是可能,拥有连接编辑功能的客户端应当自动把请求的地址修改成从服务器反馈回来的地址。除非额外指定,不然这个响应也是可缓存的。新的永久性的URI应当在响应的Location域中返回,除非这是一个HEAD请求,不然响应的实体中应当包含指向新的URI的超连接及简短说明。若是这不是一个GET或HEAD请求,浏览器禁止自动进行重定向,除非获得用户的确认,由于请求的条件可能所以发生变化。

302 请求的资源如今临时从不一样的URI响应请求。因为这样的重定向是临时的,客户端应当继续向原有地址发送之后的请求。只有在Cache-Control或Expires中进行了指定的状况下,这个响应才是可缓存的。新的临时性的URI应当在响应的Location域中返回,除非这是一个HEAD请求,不然响应的实体中应当包含指向新的URI的超连接及简短说明。若是这不是一个GET或HEAD请求,浏览器禁止自动进行重定向,除非获得用户的确认,由于请求的条件可能所以发生变化。

303 对应当前请求的响应能够在另外一个URI上被找到,并且客户端应当采用GET的方式访问那个资源。这个方法的存在主要是为了容许由脚本激活的POST请求输出重定向到一个显得资源。这个新的URI不是原始资源的替代引用。同时,303响应禁止被缓存。固然,第二个请求(重定向)可能被缓存。新的URI应当在响应的Location域中返回,除非这时一个HEAD请求,不然响应的实体中应当包含指向新的URI的超连接及简短说明。

304 若是客户端发送了一个待条件的GET请求且该请求以被容许,而文档的内容(自上次访问以来或根据请求的条件)并无改变,则服务器应当返回这个状态码。304响应禁止包含消息体,所以始终以消息头后的第一个空行结尾。

305 被请求的资源必须经过指定的代理才能被访问。Location域中将给出指定的代理所在的URI信息,接收者须要重复发送一个单独的请求,经过这个代理才能访问相应资源,只有原始服务器才能创建305响应。
306 在最新的规范中,306状态码已经再也不被使用。

307 请求的资源如今临时从不一样的URI响应请求,因为这样的重定向是临时的,客户端应当继续向原有地址发送之后的请求。只有在Cache-Control或Expires中进行了指定的状况下,这个响应才是可缓存的。新的临时性URI应当在响应的Location域中返回,除非这是一个HEAD请求,不然响应的实体中应当包含新的URI的超连接及简短说明。由于部分浏览器不能识别307响应,所以须要添加上述必要信息以便用户可以理解并向新的URI发出访问请求。若是这不是一个GET或HEAD请求,那么浏览器禁止自动进行重定向,除非获得用户的确认,由于请求的条件可能所以发生变化。

4xx(客户端错误类):请求包含错误语法或不能正确执行异步

400 语义有误,当前请求没法被服务器理解,除非进行修改,不然客户端不该该重复提交这个请求;请求参数有误。

401 当前请求须要用户验证。

402 该状态码是为了未来可能的需求而预留的。

403 服务器已经理解请求,但拒绝执行它。与401响应不一样的是,身份验证并不能提供任何帮助,并且这个请求也不该该被重复提交。

404 请求失败,请求所但愿获得的资源未被在服务器上发现。没有信息可以告诉用户这个状态究竟是暂时的仍是永久的。假如服务器知道状况的话,应当使用410状态码来告知旧资源由于某些内部的配置机制问题,已经永久的不可用,并且没有任何可跳转的地址。404这个状态码被普遍用于当服务器不想揭示到底为什么请求被拒绝或没有其余适合的响应可用的状况下。

405 请求行中指定的请求方法不能被用于请求相应的资源。该响应必须返回一个Allow头信息用以表示出当前资源可以接受的请求方法的列表。鉴于PUT,DELETE方法会对服务器上的资源进行写操做,由于绝大部分的网页服务器都不支持或在默认配置下不容许上述请求方法,对于此类请求均会返回405错误。

406 请求资源的内容特性没法知足请求头中的条件,由于没法生成响应实体。除非这是一个HEAD请求,不然该响应就应当返回一个包含可让用户或者浏览器从中选择最合适的实体特性以及地址列表实体。实体的格式由Content-Type头中定义的媒体类型决定。浏览器能够根据格式及自身能力自行作出最佳选择。可是,规范中并无定义任何做出此类自动选择的标准。

407 与401响应相似,只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个Proxy-Authenticate用以进行身份询问。客户端能够返回一个Proxy-Authorization信息头用于验证。

408 请求超时,客户端没有在服务器预设的等待时间内完成一个请求发送。客户端能够随时再次提交这一请求无需进行任何更改。

409 因为和被请求的资源的当前状态之间存在冲突,请求没法完成。该状态码的使用状况:用户被认为可以解决冲突,而且会从新提交新的请求。该响应应当包含足够的信息以便用户发现冲突的源头。冲突一般发生对于PUT请求的处理中。

410 被请求的资源在服务器上已经再也不可用,并且没有任何已知的转发地址。这样的情况应该被认为是永久性的。若是可能,拥有连接编辑功能的客户端应当在得到用户许可后删除全部指向这个地址的引用。若是服务器不知道或没法肯定这个情况是不是永久的,那么就应该使用404状态码。除非额外说明,不然这个响应是可缓存的。410响应的主要目的是帮助网站管理员维护网站,通知用户该资源已经不在可用,而且服务器拥有着但愿全部指向这个资源的远端连接也被删除。这类事件在限时、增值服务中很广泛。一样,410响应也被用于通知客户端在当前服务站点上,本来属于某个我的的资源已经再也不可用。固然是否须要把全部永久不可用的资源标记为"410 Gone",以及是否须要保持此标记多长时间,彻底取决于服务器拥有者。

411 服务器拒绝在没有定义Conten-Length头的状况下接受请求。在添加了代表请求消息体长度的有效Content-Length头以后,客户端能够再次提交该请求。

412 服务器在验证请求头字段中给出先决条件时,没能知足其中的一个或多个。这个状态码容许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其但愿的内容之外的资源上。

413 服务器拒绝处理前请求,由于该请求提交的实体数据超过了服务器愿意或可以处理的范围。此种状况下,服务器能够关闭链接以避免客户端继续发送此请求。

414 请求的URI长度超过了服务器可以解释的长度,所以服务器拒绝对该请求提供服务,比较少见。

415 对于当前球的方法和所请求的资源,请求中提交的实体并非服务器中所支持的格式,所以请求被拒绝。

416 若是请求中包含了Range请求头,而且Range中指定的任何数据范围都与当前资源的可用范围补充和,同时请求中又没有定义If-Range请求头,那么服务器就应当返回416状态码。

417 在请求头Except中指定的预期内容没法被服务器知足,或服务器是个代理服务器,它有明显的证据证实在当前路由的下一个节点上,Except的内容没法被知足。

5xx(服务端错误类):服务器不能正确执行一个正确的请求工具

500 服务器遇到了一个不曾预料到情况,致使了它没法完成对请求的处理。通常来讲,这个问题都会在服务器的程序码出错时出现。

501 服务器不支持当请求所须要的某个功能,当服务器没法识别请求的方法,而且没法支持其对任何资源的请求。

502 做为网关或者代理工做的服务器尝试执行请求时,从上游服务器接收到无效的响应。

503 因为临时的服务器维护或过载,服务器当前没法处理请求。这个情况是临时的,而且将在一段时间以后恢复。若是可以预计延迟时间,那么响应中能够包含一个Retry-After头用以标明这个延迟时间,若是没有给出这个Retry-After信息,那么客户端当以处理500响应方式处理它。

504 做为网关或代理服务器尝试执行请求时,未能及时从上有服务器或辅助服务器收到响应。

505 服务器不支持,或拒绝支持在请求中使用的HTTP版本。这暗示着服务器不能或不肯使用与客户端相同的版本。响应中应当包含一个描述了为什么版本不被支持以及服务器支持哪些协议的实体。

506 由《透明内容协商协议》扩展,表明服务器存在内部配置错误。

507 服务器没法存储完成请求所必须的内容。这个状态被认为是临时的。

509 服务器达到带宽限制。这不是一个官方的状态码,但仍被普遍使用。

510 获取资源所须要的策略并无知足。
相关文章
相关标签/搜索