美文网首页
网络 - 状态码

网络 - 状态码

作者: 二斤寂寞 | 来源:发表于2019-06-18 14:27 被阅读0次

    100~199信息性状态码

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

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

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

    • 对于客户端,若客户端希望发送一个实体,并且愿意等待服务器状态码为100的响应,那么客户端的请求报文中应包含值为100 Continue的Expect首部。客户端在发送请求后,不要一直等待,可以在超出一定时间后直接发送实体。

    • 对于服务器,若服务器收到包含值为100 Continue的首部,应该以100 Continue或其他对应错误状态码响应。服务器不应该向没有包含100 Continue首部的请求响应100 Continue状态码。若服务器在响应100 Continue状态之前已经收到客户端发送的实体部分,可以跳过响应100 Continue,但要响应最终的状态。

    • 对于代理,若代理接受到客户端包含100 Continue的请求,在代理知道请求的下一跳只支持HTTP/1.0(或更早),它应该响应417 Expectation Failed;在代理知道下一跳支持HTTP/1.1或没有清楚的状态,则应转发这一请求。若代理将上游服务器响应转发给客户端时,知道客户端不支持HTTP/1.1,则不应响应100 Continue。

    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协议详解(一)

    相关文章

      网友评论

          本文标题:网络 - 状态码

          本文链接:https://www.haomeiwen.com/subject/ezoxqctx.html