网络 - 状态码

2019-06-18  本文已影响0人  二斤寂寞

100~199信息性状态码

这些状态码较新,在HTTP/1.1引入。下面是已定义的状态码:

Code 原因短语 描述
100 Continue 服务器收到请求的初始部分,请客户端继续。
101 Switching Protocols 服务器正在根据客户端的指定,将协议更换成Update首部所列协议。

对于状态码100,起初的设计是为了:客户端想发送一个实体到服务器,但在发送之前想查看服务器是否愿意接受。需要知道的是:

200~299成功状态码

在请求成功时,服务器会返回代表成功的状态码;对于不同的请求方法,状态码有可能会有区别。已知的成功状态码如下:

Code 原因短语 描述
200 OK 最常见。请求成功,响应主体包含了具体的数据。
201 Created 响应在服务器 创建资源的请求,如PUT。服务器应确保资源被创建,并在响应报文中包含资源URL。
202 Accepted 服务器以接收到请求,但还未执行任何操作。
203 Non-Authoritative Information 实体首部(也可以称为元信息)包含的信息不是来自于服务器,而是资源的一个副本。若中间节点上有一份资源副本,但无法或没有对它发出的与资源有关的元信息进行验证,就会出现这种情况。当然,这种状态并不是非用不可,若实体首部来自服务器,返回200完全可以。
204 No Content 响应报文中无主体部分。主要用于在浏览器不转为显示新文档情况下,对其更新。
205 Reset Content 负责告知浏览器清除当前页面中所有HTML元素。
206 Partial Content 成功执行一个部分或Range请求。客户端可以在首部中指定请求某个范围内的文件。该状态响应头部必须包含Content-Range、Date、以及ETag或Content-Location。
200~299成功状态码.png

300~399重定向状态码

已知状态码列表:

Code 原因短语 描述
300 Multiple Choices 客户端请求实际指向多个资源的URL。客户端可以在响应中找到资源列表。
301 Moved Permanently 请求的URL已被移除。响应的Location首部包含现在所处的位置。
302 Found 与301类似,客户端本次应使用响应中的临时URL,将来的请求任使用以前的URL。
303 See Other 告知客户端使用另一个URL来获取资源。其主要目的是,允许POST请求的响应将客户端定向的某一个资源上去。
304 Not Modified 若客户端发起一个有条件的GET请求,而资源未被修改,可以使用该状态码说明资源未被修改。
305 Use Proxy 必须通过代理来访问这一资源,代理有Location首部给出。需要知道的是,客户端接收到这一状态时,不应该假定所有请求都经过代理。
306 未使用 暂未使用。
307 Temporary Redirect 和302相同。
300~399重定向状态码01.png
300~399重定向状态码-2.png

对于302、303、307状态码的说明:从上面表格上看,这3个状态码出现交叉的情况;在HTTP/1.0,只有302,服务器希望对POST请求响应302后,客户端向从定向的URL发送GET请求。303、307是在HTTP/1.1加入,303时,浏览器依然执行HTTP/1.0 302的动作;307,只是不会将原始的POST转为GET,而是询问用户。这些都是规范说辞,但实际运用中不是这么回事,你有看到大量的307?

400~499客户端错误状态码

有时客户端发送服务器无法处理的东西,会导致错误。
已知状态码列表:

Code 原因短语 描述
400 Bad Request 告知客户端它发送了一个错误的请求。
401 Unauthorized 与适当首部一同返回,告知客户端在请求之前先进行认证。
402 Payment Required 保留未使用。
403 Forbidden 请求被拒绝。
404 Not Found 服务器无法找到请求的URL。
405 Method Not Allowed 客户端使用不支持的方法请求URL。应该在首部使用Allow告知客户端正确的方法。
406 Not Acceptable 客户端在使用指定参数说明其愿意接收什么类型的实体,但服务器没有与之对应的资源。
407 Proxy Authentication Required 代理服务器要求客户端验证。
408 Request Timeout 客户端完成请求时间过长,服务器可以关闭链接。
409 Conflict 服务器认为该请求可能引起冲突。响应主体中应包含冲突的主体的描述。
410 Gone 与404类似,只是服务器曾经拥有此资源,后来被移除。
411 Length Required 服务器要求请求报文中包含Content-Length首部。
412 Precondition Failed 客户端发起条件请求,其中有条件失败。
413 Request Entity Too Large 客户端发送的主体部分比服务器能够活希望处理的要大。
414 Request URI Too Long URL过长。
415 Unsupported Media Type 服务器无法理解或无法支持客户端发送的内容类型。
416 Requested Range Not Satisfiable 请求范围无效或无法满足。
417 Expectation Failed 请求首部包含Expect期望,但服务器无法满足。
400~499客户端错误状态码01.png 400~499客户端错误状态码02.png

500~599服务器错误状态码

客户端发送的是有效请求,服务器自身出错。下面是已知状态码列表:

Code 原因短语 描述
500 Internal Server Error 服务器遇到一个妨碍它提供服务的错误。
501 Not Implemented 客户端发起的请求超出服务器能力范围,如使用了不支持的方法。
502 Bad Gateway 无效网关。通常不是这上游服务器关闭,而是使用了上游服务器不同意协议交换数据。
503 Service Unavailable 服务器暂时无法提供服务。若服务器知道服务什么时间可以使用,可以在响应头中加入Retry-After首部说明。
504 Gateway Timeout 于408类似,只是这里的响应来自一个网关或代理,它们在等待另一个服务器响应对其请求响应时超时。
505 HTTP Version Not Support 服务器收到的请求使用了它无法支持的协议版本。
500~599服务器错误状态码01 .png

参考文章:
https://juejin.im/post/5a4f782c5188257326469d7c
HTTP协议详解(一)

上一篇下一篇

猜你喜欢

热点阅读