精华内容
下载资源
问答
  • HTTP协议中状态码的含义

    千次阅读 2016-11-02 15:32:42
    10.状态码定义 每一个状态码在下面定义,包括此状态码依赖于方法的描述和响应里需要的任何元信息的描述。...因为HTTP/1.0没有定义任何1xx状态码,所以服务器不能发送一个1xx响应给一个HTTP/1.1客户端,除

    当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

    HTTP状态码的英文为HTTP Status Code。 下面是常见的HTTP状态码:

    • 200 - 请求成功
    • 301 - 资源(网页等)被永久转移到其它URL
    • 404 - 请求的资源(网页等)不存在
    • 500 - 内部服务器错误

    HTTP状态码的分类

    HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

    分类 分类描述
    1** 信息,服务器收到请求,需要请求者继续执行操作
    2** 成功,操作被成功接收并处理
    3** 重定向,需要进一步的操作以完成请求
    4** 客户端错误,请求包含语法错误或无法完成请求
    5** 服务器错误,服务器在处理请求的过程中发生了错误

    10.状态码定义

    每一个状态码在下面定义,包括此状态码依赖于方法的描述和响应里需要的任何元信息的描述。

    10.1 通知的 1xx
    这类状态代码指明了一个临时性的响应,包含一个Status-Line和可选的头域,并且被一个空行结束(空行就是CRLF)。这类状态码响应没有必须的头域。因为HTTP/1.0没有定义任何1xx状态码,所以服务器不能发送一个1xx响应给一个HTTP/1.1客户端,除了实验性的目的。
    客户端必须能在一个常规响应之前接受一个或多个1xx状态,即使客户端不期望100(继续)状态响应。不被客户端期望的1xx状态响应可能会被用户代理忽略。代理必须能转发1xx响应,除非代理和它的客户端的连接关闭了,或者除非代理自己响应请求并产生1xx响应。(例如:如果代理添加了“Expect:100-continue”头域当转发请求时,那么它

    不必转发相应的100(继续)状态响应。)


    10.1.1 100 继续 (Continue)
    100状态响应告诉客户端应该继续请求。100响应是个中间响应,它被用于通知客户端请求的初始部分已经被接收了并且此请求还没有被服务器丢弃。客户端应该继续发送请求的剩余部分,或者,如果此请求已经完成了客户端会忽略此100响应。服务器在接收请求后必须发送一个终结响应。


    10.1.2 101切换协议 (Switching Protocols)
    服务器理解和愿意遵循客户端这样的请求,此请求通过Upgrade消息头域指明在连接上应用层协议的改变。 服务器将会切换到响应里Upgrade头域里指明的协议,它会以一个空行结束此101响应。只有协议切换时能受益协议才应该切换。例如,当传输资源时,切换到一个新的HTTP版本比旧的版本要好,或者切换到一个实时的,同步的协议会带来好处时,这时我们都应该考虑切换。


    10.2 成功 2xx

    这类状态码指明客户端的请球已经被服务器成功的接收,理解,并且接受了。


    10.2.1 200 OK
    此状态码指明客户端请求已经成功了。响应返回的信息依赖于请求里的方法,例如:
    GET 请求资源的相应的实体已经包含在响应里并返回给客户端。
    HEAD 相应于请求资源实体的实体头域已经被包含在无消息主体的响应里。
    POST 响应里已经包含一个实体,此实体描述或者包含此POST动作执行的结果

    TRACE 响应里包含一个实体,此实体包含终端对服务器接收的请求消息。


    10.2.2 201 已创建(Created)
    请求已经被服务器满足了并且已经产生了一个新的资源。新创建的资源的URI在响应的实体里返回,但是此资源最精确的URI是在Location头域里给出的。响应应该含有一实体,此实体包含此资源的特性和位置,用户或用户代理能从这些特性和位置里选择最合适的。实体格式被Content-Type头域里媒体类型指定。源服务器必须能在返回201状态码之前建立资源。如果动作(译注:这里指能创建资源的方法,如POST方法)不能被立即执行,那么服务器应该以

    202(接受)响应代替。一个201响应可以包含一个ETag响应头域,此头域的值指明了当前请求变量,也即刚刚创建的资源的实体标签(entity tag)值。


    10.2.3 202 接受(Accepted)
    请求已经被接受去处理,但是还没有处理完成。请求可能会或者不会处理完成,因为存在当处理的过程中拒绝处理的情况。202响应是有意非担保性的。它是为了允许服务器可以为其它处理(如:每天执行一次的批处理)接收请求而不需要用户代理在处理没有完成之前长期连接到服务器。响应里的实体应该包含请求当前状态的声明并且应该包含一个状态监视指针或一些用户期望何时请求被满足的评估值。


    10.2.4 203 非权威信息(Non-Authoritative information)

    此状态码响应指明响应里实体头域元信息不能从源服务器获而是从本地的或第三方响应副本里收集的。这些元信息可能是源服务器版本的子集或超集。如,包含一个存在本地的资源注释信息就可以产生一个源服务器能理解的元信息的超集。利用此响应状态码不是必须但是比200(Ok)响应却更加合适。


    10.2.5 204 无内容 (No Content)
    服务器已经满足了请求但并没有返回一个实体而是返回更新的元信息。此响应可能包含新的或更新的元信息以实体头域的形式,这些元信息应该相关于请求变量。利用此204响应,客户端如果是一个用户代理,它就可以不用改变引起请求发送的文档视图。204状态响应主要的目的是允许输入,而不必引起用户代理当前文档视图的改变,尽管一些新的或更新了的元信息可能会应用于用户代理视图里的当前文档。204响应不能包含一个消息主体,并且在头域后包含一个空行结束。


    10.2.6 205 重置内容(Reset Content)

    205状态响应是服务器告诉用户代理应该重置引起请求被发送的文档视图。此响应主要的目的是清空文档视图表单里的输入框以便用户能输入其它信息。此响应不能包含一个实体。


    10.2.7 206 部分内容(Partial Content)
    服务器已经完成了客户端对资源的部分GET请求。请求必须包含一个Range头域用来指出想要的范围,并且也有可能包含一个If-Range头域来使请求成为一个条件请求。
    206状态的响应必须包含以下的头域:
    - 或者含有一个Content-Range 头域,此头域指明了响应里的范围;或者含有一个值为“multipart/byteranges”的Content-Type头域并且每部分包含Content-Range头域。如果一个Content-Length头域出现在响应里,它的值必须是实际传输的消息主体的字节数。
    - Date头域
    - ETag 和/或 Content-Location头域,如果这些头域假设在相同请求的200响应里也会出现的话。
    - Expire,Cache-Control,和/或者Vary头域,如果这些头域的域值与以前同一变量响应中的不一样。

    如果206响应是使用了强缓存验证的If-Range请求的结果,那么此响应不应该包含其他的实体头域。如果响应是使用了弱缓存验证的If-Range请求的结果,那么响应必须不能包含其他的实体头域;这能防止缓存里缓存的实体主体与更新头域之间的不一致性。另外,响应必须包含假设在相同请求的200响应里的所有实体头域。缓存不能把206响应和以前的缓存内容相合并如果ETag或Last-Modified头域并不能精确匹配。一个不能支持Range和Content-Range头域的缓存不能缓存206(部分的)响应。


    10.3 重新定向 3xx.

    这类状态码指明用户代理需要更进一步的动作去完成请求。进一步的动作可能被用户代理自动执行而不需要用户的交互,并且进一步动作请求的方法必须为GET或HEAD。一个客户端应该发现无限的重定向循环,因为此循环能产生网络拥挤。注意:以前此规范版本建议一个最多能有五个重定向。内容开发者应该知道客户端可能存在这个限制。


    10.3.1 300 多个选择.(Multiple Choices)
    请求资源对应于众多表现形式中的一个,每个表现形式都有一个特定的位置(location),并且代理驱动协商(agent-driven negotiation)信息被提供以便用户(或用户代理)能选择一个更适的表现形式并重定向它的请求那个表现形式的位置。除非是HEAD请求,否则300状态响应应该包含一个实体,此实体包含一个资源特性和位置列表,从这个列表里用户或用户代理能选择最合适的资源的表现形式。实体格式被Content-Type头域里的媒体类型指定。用户代理选择最合适的表现形式的行为可能会被自动执行,这依赖于实体格式和自己的能力。然而,此规范并没有定义自动执行行为的标准。如果服务器能确定更好的表现形式,它应该为此表现形式在Location头域里包含一个特定的

    URI来指明此表现形式的位置;用户代理可能会利用此Location头域自动重定向。300状态响应是可缓存的除非被特别指明。


    10.3.2 301 永久移动 (Moved Permanently)
    请求资源被赋于一个新的永久的URI,并且任何将来对此资源的引用都会利用此301状态响应返回的URI。具有链接编辑能力的客户端应该能自动把请求URI的引用转到到服务器返回的新的引用下。此响应是能缓存的除非另外声明。新的永久URI应该在响应中被Location头域给定。除非请求方法是HEAD,否则此响应应该包含一个超文本提示和一个指向新URI的超文本链接。如果客户端接收了一个来自非GET或HEAD请求方法的301响应,那么用户代理不能自动重定向请求除非它能被用户确认,因为这可能会改变请求提交的条件。

    注意:当客户端在接收了301 状态码响应后,会重定向POST 请求,一些已经存在的HTTP/1.0用户代理会错误的把此请求变成一个GET请求。


    10.3.3 302 发现(Found)
    请求的资源暂时地存放在一个不同的URI下。因为重定向的地址可能有时会被改变,客户端应该继续为将来的请求利用请求URI(Request-URI)。302响应是只有在Cache-Control或Expires头域指明的情况下才能被缓存。临时的URI应该在Location头域里指定。除非请求方法是HEAD,否则此响应应该包含一个超文本提示和一个指向新URI的超文本链接。如果客户端接收了一个来自非GET或HEAD请求方法的302响应,那么用户代理不能自动重定向请求除非它能被用户确认,因为这可能会改变请求提交的条件。

    注意:RFC1945和RFC2068指定客户端不能在重定向请求的时候改变请求方法。然而,大多数用户代理实现会把302响应看成是303响应,从而根据Location头域值的URI执行GET请求,不管原始的请求方法是什么。303和307状态响应的目的是为使服务器明白客户端期望哪种类型的重定向。


    10.3.4 303 见其他(See Other)
    请求的响应被放在一个不同的URI下,并且应该用GET方法获得那个资源。此方法的存在主要是让POST调用脚本的输出能使用户代理重定向到一个选择的资源。新的URI并不是原始请求资源的代替引用。303响应不能被缓存,但是再次重定向请求的响应应该被缓存。不同的URI应该在Location头域里指定。除非请求方法是HEAD,除非请求方法是HEAD,否则此响应应该包含一个超文本提示和一个指向新URI的超文本链接。

    注意:许多HTTP/1.1以前版本的用户代理不能理解303状态响应。当这些客户端比较关注于互操作性的时候,302状态码应该被代替利用,因为大多用户代理对302响应的理解就是303响应。


    10.3.5 304 没有改变(Not Modified)
    如果客户端已经执行了条件GET请求,并且访问服务器的资源是允许的,但是服务器上的文档并没有被改变,那么服务器应该以此状态码响应。304响应不能包含一个消息主体(messagebody),并且在头域后面总是以一个空行结束。此响应必须包含下面的头域:
    - Date,除非指明的那些规则下Date是可以遗漏的。如果时钟不准确的源服务器遵循这些规则,并且代理和客户端在接收了一个没有Date头域的响应后加上了自己的Date,缓存将会正确操作。
    - ETag 和/或 Content-Location头域,如果这些头域应在相同请求的200响应里出现的话。
    - Expire,Cache-Control,和/或者Vary头域,如果这些头域值与以前同一变量响应中的不一致。

    如果条件GET请求使用强缓存验证时,那么响应不应包含其它实体头域。当条件GET使用弱缓存验证时,那么响应必须不能包含其它实体头域;这能防止缓存的实体主体与更新的头域之间的不一致性。如果一个304响应指示一个没有被缓存的实体,那么此缓存必须不用理会此响应,并且以无条件请求重试请求。如果缓存利用一个接收到的304响应去更新一个缓存项,那么缓存必须用此响应响应里任何最新的域值更新缓存项。


    10.3.6 305 使用代理 (Use Proxy)
    请求资源必须能通过代理访问,代理的地址在响应的Location头域里指定。Location头域指定了代理的URI。接收者被期望通过代理重试此请求,305响应必须被源服务器产生。

    注意:RFC 2068并没有说明305响应必须重定向一个单独请求并且只能被源服务器产生。不注意这些限制会有重要的安全后果。


    10.3.7 306没有使用的(unused)

    306状态码被用于此规范以前的版本,是不再使用的意思,并且此状态码被保留。


    10.3.8 307临时重发(Temporary Redirect)

    请求的资源临时存在于一个不同的URI下。由于重新向可能有时会改变,所以客户端应该继续利用此请URI(Request-URI)为将来的请求。307响应只有被Cache-Control或Expire头域指明时才能被缓存。临时URI应该在响应的Location头域里给定。否则此响应应该包含一个超文本提示和一个指向新URI的超文本链接,因为许多HTTP/1.1以前的用户代理不能理解307状态响应。因此,此提示应该包含用户在新的URI上重试原始请求的必需信息。如果307状态响应.对应的请求的方法不是GET或HEAD,那么用户代理不能自动重定向此请求除非它能被用户确认,因为因为这可能会改变请求提交的条件。


    10.4 客户端错误 4xx

    状态码4xx类的目的是为了指明客户端出现错误的情况。除了当响应一个HEAD请求,服务器应该包含一个实体,此实体包含一个此错误请求的解释。此状态码对所有请求方法都是适合的。用户代理应该展示任何响应里包含的实体给用户。如果客户端发送数据,利用TCP的服务器实现应该小心地确保客户端确认包含了响应的包(packets)的接收,在服务器关闭此输入连接前。如果在关闭连接后,客户端继续发送数据给服务器,那么服务器的TCP栈将发送一个重置包给客户端,这能擦除客户端非确认的输入缓冲(input buffers)在这些缓冲被HTTP应用程序读和解析之前。


    10.4.1 400 坏请求(Bad Request)

    请求不能被服务器理解,由于错误的语法。客户端不应该在没有改变请求的情况下重试请求。


    10.4.2 401 未授权的 (Unauthorized)

    服务器需要对请求进行用户认证。响应必须包含一个WWW-Authenticate头域,此头域包含一个适用于请求资源的授权的激励(challenge)。客户端会以一个Authorization头域重试请求。如果请求包含了授权证书,那么401响应指明对这些证书的授权失败。如果401响应包含一个和以前响应的同样激励,并且用户代理已经尝试至少一次的授权,那么用户应该被呈现包含在响应里的实体,因为这些实体可能包含相关的诊断信息。


    10.4.3 402 必需的支付 (Payment Required)

    此状态码为将来的应用保留。


    10.4.4 403 禁用 (Forbidden)

    服务器理解此请求,但拒绝满足此请求。认证是没有作用的,并且请求不应该被重试。如果请求方法是HEAD并且服务器想让客户端知道请求为什么不能被满足,那么服务器起应该在响应实体里描述此拒绝的原因。如果服务器不希望告诉客户端拒绝的原因,那么404 状态码(NotFound)响应将被使用。


    10.4.5 404 没有找到(Not Found)

    服务器并没有找到任何可以匹配请求URI 的资源。没有迹象表明条件是暂时或永久的。

    410(Gone)状态响应应该被使用,如果服务器通过内部配置机制知道一个旧资源永远不能获
    得并且也没有转发地址。此状态码通常被使用,当服务器不希望精确指出请求为何被拒绝,或

    者当没有任何其它响应可用时。


    10.4.6 405 方法不被允许(Method Not Allowed)
    此状态码表示请求行(Request-Line)里的方法对此资源来说不被允许。响应必须包含一个

    Allow头域,此头域包含以一系列对此请求资源有效的方法。


    10.4.7 406 不可接受的 (Not Acceptable)
    根据客户端请求的接受头域(译注:如:Accept, Accept-Charset, Accept-Encoding, 或者 Accept-Language),服务器不能产生让客户端可以接受的响应。除非是HEAD请求,否则响应应该包含一个实体,此实体应该包含一个可得的实体特性和位置列表,通过它用户或用户代理能选择最合适自己的。实体格式被媒体类型指定。依赖于此格式和用户代理的本身能力,选择最合适的可能会被自动执行。然而,此规范并没有定义自动执行选择的标准。

    注意:HTTP/1.1服务器被准许根据请求里的接受头域会返回不可接受的响应。在一些情况下,这可能更倾向于发送一个406响应。用户代理被鼓励观察到来的响应的头域来确定此响应是否是可接受的。如果响应是不可接受的,用户代理应该暂时停止剩余数据的接收并且询问用户然后去决定进一步的动作。


    10.4.8 407 需要代理验证(Proxy Authentication Required)

    此状态码和401(Unauthorized)相似,但是指示客户端首先必须利用代理对自己验证。代理必须返回一个Proxy-Authenticate头域,此头域包含一个适用于代理的授权激励。客户端可能利用一个合适的Proxy-Autorization头域去重试此请求。


    10.4.9 408 请求超时(Request Timeout)

    客户端在服务器等待的时间里不能产生请求。客户端可能在以后会重试此请求。


    10.4.10 409 冲突 (Confilict)

    请求不能完成由于和当前资源的状态冲突。此状态码只被允许出现在期望用户也许能解决此冲并且能重新提交此请求的情况下。响应主体应该包含足够的为用户认识此资源冲突的信息。理想的情况下,响应实体应该包含足够为用户或用户代理解决此问题的信息;然而,这是也许没有可能并且也没有必要。冲突最可能发生在响应PUT请求的时候。例如,如果版本被使用并且被PUT的实体包含资源的改变,而这些改变会和以前的(第三方的)请求的相冲突,那么服务器应该使用409响应去指明它不能完成此请求。在这种情况下,此响应的实体可能包含这两个版本的差异点,响应的实体格式以Content-Type头域指定。


    10.4.11 410 不存在(gone)
    请求资源在源服务器上不再可得并且也没有转发地址可用。此条件被认为是永久的。具有链接编辑能力的客户端应该在用户确认后删除请求URI的引用。如果服务器不知道或不容易去确定条件是否是永久的,那么此404(没有发现)状态响应将被代替利用。响应是可缓存的,除非另外申明。

    410响应主要的目的是为了web维护任务,这通过告诉接收者资源已经不可得了并且告诉接收者服务器拥有者已经把那个资源的远程连接给移除了。对有时间限制的,推销性的服务,和对不再继续工作在服务器站点人员的资源,这个事件(410响应)是非常普遍的。它不需要把所有长久不可得的资源标记为“gone”或者保持任意长时间—这需要服务器拥有者自己的判断


    10.4.12 411 长度必需 (Length Required)

    服务器拒绝接受请求里没有包含Content-Length头域的请求。客户端可以重试此请求如果它添加了一个有效的Content-Length头域,此头域值指定了请求消息里消息主体的长度。


    10.4.13 412 先决条件失败 (Precondition Failed)

    在一个或多个请求头域里指定的先决条件当在服务器上测试为false时返回的响应。此响应允许客户端把先决条件放放到当前资源的元信息(头域数据)之上,这样能防止请求方法被应用于一个非目的性的资源。


    10.4.14 413 请求实体太大

    服务器拒绝处理请求因为请求实体太大以致达到服务器不愿意去处理。服务器可能关闭此连接去防止客户端继续请求。如果条件是暂时的,服务器应该包含一个Retry-After头域用来指明此条件是暂时的并且指明客户端应该什么时候重试。


    10.4.15 414 请求URI太长(Request-URI Too Long)

    服务器拒绝为请求服务因为此请求URI太长了以至于服务器不能解析。这种情况是很少的,只发生在当客户端POST请求不合适地转换为带有大量查询信息的GET请求时。


    10.4.16 415 不被支持的媒体类型(Unsupported Media Type)

    服务器拒绝为请求服务,因为请求的实体的格式不能被此方法的请求资源所支持。


    10.4.17 416 请求范围不满足 (Requested Range Not Satisfiable)

    服务器返回一个此状态码的响应,如果请求包含一个Range请求头域,并且此头域里range-specifier值没有和已选资源的当前extent值重叠,并且请求没有包含一个If-Range请求头域。(对byte-ranges来说,这意味着byte-range-spec的所有first-byte-pos值大于选择的资源的当前长度)。当此状态码响应是在byte-range请求返回时,响应应该包含一个Content-Range实体头域用来指定已选资源的当前长度。响应不能使用multipart/byteranges媒体类型。


    10.4.18 417 期望失败(Expectation Failed)

    Expect请求头域里指定的希望不能被服务器满足,或者,如果服务器是代理,那么能确定请求不能被下一站(next-hop)服务器满足。


    10.5 服务器错误 5xx (Server Error)

    这类状态码指明服务器处理请求时产生错误或不能处理请求。除了HEAD请求,服务器应该包含一个实体,此实体用来解释错误,和是否是暂时或长期条件。用户代理应该展示实体给用户。此响应状态码能应用于任何请求方法。


    10.5.1 500 服务器内部错误 (Internal Server Error)

    服务器遇到了一个意外条件,此条件防止服务器满足此请求。


    10.5.2 501 不能实现 (Not Implemented)

    服务器没有能力去满足请求。当服务器不能识别请求方法并且不支持它请求资源的时候,这个响应是很合适的。


    10.5.3 502 坏网关 (Bad Gateway)

    此响应说明:作为网关或代理的服务器从上游(upstream)服务器接收了一个无效的响应。


    10.5.4 503 服务不能获得(Service Unavailable)

    由于服务器暂时地过载或维护,服务器不能处理请求。这就是说这是暂时条件,此条件将会在一些延时后被减轻。延迟的长度可以在Retry-After头域里指定。如果没有Retry-After被给,那么客户端应该处理此响应就像它处理500响应一样。

    注意:503状态码的存在并不是意指服务器当产生过载时必须利用它。一些服务器可能希望拒绝此连接。


    10.5.5 504 网关超时(Gateway Timeout)

    作为网关或代理的服务器在不能及时地接收一个从URI指定的上游(upstream)服务器(例如:HTTP,FTP,LDAP服务器)或者其他的辅助性服务器(例如:DNS服务器)的响应。

    注意:当DNS查找超时时,一些部署的代理将会返回400或500响应。


    10.5.6 505 HTTP版本不支持 (HTTP version Not Supported)
    服务器不能支持,或拒绝支持此HTTP协议版本消息。505响应指明服务器不能或不愿意完成这样的请求。此响应应该包含一个实体,此实体描述了为什么此协议版本不被支持和其他能被服务器支持的协议版本。
    展开全文
  • http协议常见状态码解读

    千次阅读 2017-12-16 21:37:43
    表示临时响应并需要请求者继续执行操作的状态码。 100(继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101(切换协议) ...

    1xx(临时响应)

    表示临时响应并需要请求者继续执行操作的状态码。

    100(继续)

    请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。

    101(切换协议)

    请求者已要求服务器切换协议,服务器已确认并准备切换。

     

    2xx(成功)
    表示成功处理了请求的状态码。

     

    200(成功)

    服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。如果是对您的 robots.txt 文件显示此状态码,则表示 Googlebot 已成功检索到该文件。

    201(已创建)

    请求成功并且服务器创建了新的资源。

    202(已接受)

    服务器已接受请求,但尚未处理。

    203(非授权信息)

    服务器已成功处理了请求,但返回的信息可能来自另一来源。

    204(无内容)

    服务器成功处理了请求,但没有返回任何内容。

    205(重置内容)

    服务器成功处理了请求,但没有返回任何内容。与 204 响应不同,此响应要求请求者重置文档视图(例如,清除表单内容以输入新内容)。

    206(部分内容)

    服务器成功处理了部分 GET 请求。

     

    3xx(重定向)

    要完成请求,需要进一步操作。通常,这些状态码用来重定向。Google 建议您在每次请求中使用重定向不要超过 5 次。您可以使用网站管理员工具查看一下 Googlebot 在抓取重定向网页时是否遇到问题。诊断下的网络抓取页列出了由于重定向错误导致 Googlebot 无法抓取的网址。

     

    300(多种选择)

    针对请求,服务器可执行多种操作。服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。

    301(永久移动)

    请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。您应使用此代码告诉 Googlebot 某个网页或网站已永久移动到新位置。

    302(临时移动)

    服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。此代码与响应 GET 和 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉 Googlebot 某个网页或网站已经移动,因为 Googlebot 会继续抓取原有位置并编制索引。

    303(查看其他位置)

    请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。对于除 HEAD 之外的所有请求,服务器会自动转到其他位置。

    304(未修改)

    自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
    如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。服务器可以告诉 Googlebot 自从上次抓取后网页没有变更,进而节省带宽和开销。
    .

    305(使用代理)

    请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。

    307(临时重定向)

    服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。此代码与响应 GET 和 HEAD 请求的 <a href=answer.py?answer=>301</a> 代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉 Googlebot 某个页面或网站已经移动,因为 Googlebot 会继续抓取原有位置并编制索引。

     

    4xx(请求错误)
    这些状态码表示请求可能出错,妨碍了服务器的处理。

     

    400(错误请求)

    服务器不理解请求的语法。

    401(未授权)

    请求要求身份验证。对于登录后请求的网页,服务器可能返回此响应。

    403(禁止)

    服务器拒绝请求。如果您在 Googlebot 尝试抓取您网站上的有效网页时看到此状态码(您可以在 Google 网站管理员工具诊断下的网络抓取页面上看到此信息),可能是您的服务器或主机拒绝了 Googlebot 访问。

    404(未找到)

    服务器找不到请求的网页。例如,对于服务器上不存在的网页经常会返回此代码。
    如果您的网站上没有 robots.txt 文件,而您在 Google 网站管理员工具“诊断”标签的 robots.txt 页上看到此状态码,则这是正确的状态码。但是,如果您有 robots.txt 文件而又看到此状态码,则说明您的 robots.txt 文件可能命名错误或位于错误的位置(该文件应当位于顶级域,名为 robots.txt)。
    如果对于 Googlebot 抓取的网址看到此状态码(在”诊断”标签的 HTTP 错误页面上),则表示 Googlebot 跟随的可能是另一个页面的无效链接(是旧链接或输入有误的链接)。

    405(方法禁用)

    禁用请求中指定的方法。

    406(不接受)

    无法使用请求的内容特性响应请求的网页。

    407(需要代理授权)

    此状态码与 <a href=answer.py?answer=35128>401(未授权)</a>类似,但指定请求者应当授权使用代理。如果服务器返回此响应,还表示请求者应当使用代理。

    408(请求超时)

    服务器等候请求时发生超时。

    409(冲突)

    服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,以及两个请求的差异列表。

    410(已删除)

    如果请求的资源已永久删除,服务器就会返回此响应。该代码与 404(未找到)代码类似,但在资源以前存在而现在不存在的情况下,有时会用来替代 404 代码。如果资源已永久移动,您应使用 301 指定资源的新位置。

    411(需要有效长度)

    服务器不接受不含有效内容长度标头字段的请求。

    412(未满足前提条件)

    服务器未满足请求者在请求中设置的其中一个前提条件。

    413(请求实体过大)

    服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

    414(请求的 URI 过长)

    请求的 URI(通常为网址)过长,服务器无法处理。

    415(不支持的媒体类型)

    请求的格式不受请求页面的支持。

    416(请求范围不符合要求)

    如果页面无法提供请求的范围,则服务器会返回此状态码。

    417(未满足期望值)

    服务器未满足”期望”请求标头字段的要求。

    5xx(服务器错误)
    这些状态码表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

     

     

    500(服务器内部错误)

    服务器遇到错误,无法完成请求。

    501(尚未实施)

    服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。

    502(错误网关)

    服务器作为网关或代理,从上游服务器收到无效响应。

    503(服务不可用)

    服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。

    504(网关超时)

    服务器作为网关或代理,但是没有及时从上游服务器收到请求。

    505(HTTP 版本不受支持)

    服务器不支持请求中所用的 HTTP 协议版本。

    展开全文
  • HTTP响应协议状态码以及跳转问题

    千次阅读 2019-09-28 15:18:54
    最近在学习计算机网络以及JavaWeb,对Http响应协议和跳转的几种方式以及跳转的状态码有一些自己的总结认识: 第一次访问一个地址并访问成功:200、 不是第一次访问一个地址: 对于浏览器的缓存,服务器端无变化...

    最近在学习计算机网络以及JavaWeb,对Http响应协议和跳转的几种方式以及跳转的状态码有一些自己的总结认识:

    • 第一次访问一个地址并访问成功:200
      在这里插入图片描述

    • 不是第一次访问一个地址:

      • 对于浏览器中的缓存,服务器端无变化:304
        在这里插入图片描述
      • 浏览器端缓存的页面已经在服务器端发生改变:200(这里我在服务器端已经修改了login.html,再次访问就会是200:)
        在这里插入图片描述
    • 跳转的两种方式(假定从login.html页面跳转至fail.html/success.html页面):

      • 服务端跳转:浏览器地址栏的地址url不发生改变,会在服务器内部访问目标地址,并返回文件对象,且跳转前页面(Login)的状态码为:200没有跳转后页面(fail/success)的数据此时刷新浏览器页面会报错!
        服务端跳转:在这里插入图片描述
      • 客户端跳转(2种方式)
        • 临时客户端跳转(普通的、默认客户端跳转方式)
          • 对于跳转前(Login)页面:302:重定向,表示二次跳转
          • 对于跳转后页面(fail/success)(200/304参照是不是第一次访问和缓存是否修改
            临时客户端跳转:
            在这里插入图片描述
        • 永久客户端跳转
          • 对于跳转前(Login)页面:301 , 表示永久客户端跳转, 涉及SEO范畴301跳转SEO详情
          • 对于跳转后页面(fail/success)(200/304参照是不是第一次访问和缓存是否修改
            永久客户端跳转:
            在这里插入图片描述
    • 404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;

    • 500:请求资源找到了,但服务器内部出现了错误;

    展开全文
  • 【总结】HTTP协议中状态码(200、403、404、500等) 当我们打开网页或刷新网页或点击超链接等操作时,服务器都会给出相应的响应 返回的状态也有很多种 现在大多都是遵循HTTP协议的,在HTTP协议中,有如下几种状态...

    【总结】HTTP协议中的状态码(200、403、404、500等)

    当我们打开网页或刷新网页或点击超链接等操作时,服务器都会给出相应的响应

    返回的状态也有很多种

    现在大多都是遵循HTTP协议的,在HTTP协议中,有如下几种状态码:

    • 100 ~ 199
    • 200 ~ 299
    • 300 ~ 399
    • 400 ~ 499
    • 500 ~ 599

    以上几种范围的状态码分别表示什么含义信息呢?

    1 、100 ~ 199范围状态码

    100 ~ 199范围状态码用来表示信息的。

    【举例】100状态码表示服务器同意处理客户的请求。

    2、200 ~ 299范围状态码

    200 ~ 299范围状态码用来表示请求成功。

    【举例】204状态码表示请求成功

    如图为请求成功返回的200状态码:
    在这里插入图片描述

    3、300 ~ 399范围状态码

    300 ~ 399范围状态码表示重定向

    【举例】301表示页面移走了,304表示缓存页面仍然有效。
    在这里插入图片描述

    4、400 ~ 499范围状态码

    400 ~ 499范围状态码表示客户端的错误

    【举例】403表示页面禁止访问,404表示页面没有找到。
    在这里插入图片描述

    5、500 ~ 599范围状态码

    500 ~ 599范围状态码表示服务器错误
    【举例】500表示服务器内部错误,503表示以后再试。

    6、状态码常量

    HTTP为各种错误状态定义了状态码,包括资源没有找到、禁止访问、永久移动、非授权访问等等。

    这些代码在接口HttpServletResponse中都作为常量进行定义了。

    【举例】

    • 403状态码定义 : static int SC_FORBIDDEN
      Status code (403) indicating the server understood the request but refused to fulfill it.
    • 500状态码定义 :static int SC_INTERNAL_SERVER_ERROR
      Status code (500) indicating an error inside the HTTP server which prevented it from fulfilling the request.
    • 401状态定义 : static int SC_UNAUTHORIZED
      Status code (401) indicating that the request requires HTTP authentication.

    如果servlet发现客户端不应访问其结果,将调用sendError(HttpServletResponse.SC_UNAUTHORIZED),这时将返回401错误信息。

    了解了HTTP协议中的各种状态码,能够快速判断请求状态,如果出错是错在那里,什么原因导致出错,也能够帮助我们更好地进行开发。

    相关技术文章:
    【Java Web问题解决】Tomcat报错javax.servlet.ServletException: Error instantiating servlet class.报错404
    【比较】什么是“服务器端跳转”“客户端跳转”,二者有什么区别?
    【总结】表单提交的get和post有什么不同?
    【总结】Java Web 中的4种属性范围(page、request、session、application)
    【问题解决】Tomcat启动时控制台出现中文乱码的问题解决方法
    【示例项目】java实现通过身份证号码判断籍贯所在地区

    展开全文
  • Http协议的几种常见状态码

    千次阅读 2020-04-11 11:04:50
    一个较好的办法就是遵循HTTP协议,使用请求响应的HTTP状态码(Status Code)来进行判断。HTTP响应状态码共分5类,如下表: 常见的状态码有: 200 OK:客户端请求成功。 201 Created:表示请求已经被成功处理,并且...
  • http协议常见错误状态码 总结: 2xx - 成功。表示服务器成功地接受了客户端请求。 3xx - 重定向。表示要完成请求,需要进一步操作。客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的...
  • HTTP协议状态码详解(HTTP Status Code)

    千次阅读 2020-03-23 13:28:55
    HTTP协议状态码详解(HTTP Status Code) 使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 1xx(临时响应...
  • https://www.nowcoder.com/questionTerminal/754f752b9a274bf98cb14b8bf482fd89
  • HTTP协议中的302,303状态码

    千次阅读 2020-05-25 20:42:09
    两次面试都被面试官问HTTP协议中的302,303状态码 之前也只知道302,303是请求重定向,但是当被问到302,303的具体区别是什么的时候我有点迷,现在就为了加强记忆,来了解下具体情况: 302是http1.0的内容,303是http1.1的...
  • HTTP协议状态码,是指在HTTP协议运作由客户端发出请求连接,服务端建立连接,客户端发出HTTP请求,服务端返回响应信息,而在这个过程张由于客户端或服务端的问题会返回相应的错误代码并显示给用户,对应的错误代码...
  • HTTP协议之3XX状态码

    千次阅读 2019-01-14 15:32:29
    3XX系列状态码中302、303、307都是临时重定向,下面来说如何区分 分类 http1.1 3XX状态表 状态码 备注 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 307 Temporary Redirect ...
  • 表示临时响应并需要请求者继续执行操作的状态代码。 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器...
  • HTTP协议返回状态码大全

    千次阅读 2013-10-28 22:28:06
     浏览器访问某页面,HTTP协议返回状态码为403时表示:(B) A 找不到该页面 B 禁止访问 C 内部服务器访问 D 服务器繁忙 处于兴趣,网络搜集了状态返回码大全,属于计算机网络的知识【都说了是搜集的,...
  • 接口测试:HTTP协议中状态码

    千次阅读 2018-11-12 20:13:23
    接口测试,错误返回和相应的原因 详细分解: 1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态代码。 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在...
  • HTTP协议

    千次阅读 2020-01-29 14:29:06
    HTTP协议HTTP协议概述HTTP协议特点HTTP,URLURL介绍HTTP协议请求请求的构成请求行的格式请求头含义请求正文HTTP协议响应响应的构成响应行格式HTTP响应状态码 HTTP协议概述     超文本传输协议是互联网上应用最...
  • HTTP协议中无状态与状态码

    千次阅读 2017-04-24 11:47:19
    当访问一个网页时经常会返回404 NOT FOUND,这是状态码表示的是网页服务器HTTP响应状态的3位数字代码。 HTTP协议是无状态的是指:它不能保存客户的信息,即一次响应完成之后连接就断开了,下一次的请求需要重新...
  • HTTP协议之http状态码详解 300-305 重定向

    万次阅读 多人点赞 2015-08-04 14:11:11
    HTTP协议之http状态码详解 出处:小坦克 作者:肖佳 日期:2013/1/8 9:24:53 [大  小] 评论: 0 | 我要发表看法 HTTP状态码,我都是现查现用。 我以前记得几个常用的状态码,比如200,302,304,404, ...
  • 常见HTTP协议状态码大全

    千次阅读 2018-03-14 11:54:29
    常见的HTTP状态码为:200 - 服务器成功返回网页404 - 请求的网页不存在503 - 服务不可用详细分解:1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。代码 说明100 (继续) 请求者应当继续提出请求...
  • http协议状态码有五大类 1xx (临时响应) 2xx (请求成功) 3xx (重定向) 4xx (请求错误) 5xx (服务器错误) 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码。 100(继续) 请求...
  • 2020-07-02 HTTP协议状态码和跨域

    千次阅读 2020-07-02 16:07:21
    2020-07-02 HTTP协议状态码和跨域HTTP与HTTPS跨域 HTTP与HTTPS HTTP协议:全称Hyper Text Transfer Protocol,翻译过来就是超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输...
  • HTTP协议的响应报文状态码

    千次阅读 2017-12-01 17:37:26
    HTTP 响应报文也由 3 个部分构成,分别是:l 状态行l 响应头(Response Header)l 响应正文例子如下:HTTP/1.1 200 OKDate: Sat, 31 Dec 2005 23:59:59 GMTContent-Type: text/html;charset=ISO-8859-1Content-Length:...
  • http协议状态码 一、1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码。 100(继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 ...
  • http接口测试:了解协议、请求方法、响应状态码 接口在各个系统间的重要性无需重申,主要体现在外部系统与系统之间以及内部各子系统之间的交互点。通过这些特定的交互点和一些特殊的规则标准(协议)来进行系统数据...
  • 关于HTTP协议状态码的问题

    千次阅读 2015-12-04 11:11:03
    HTTP1.0响应状态码第一个数字代表响应的类别,别的没有什么具体的意义。 1XX:表示请求已接收,需要继续处理。 2xx:表示请求已经成功被服务器接收,理解并接受。 3xx:为完成请求,客户端需要进一步细化请求。 4xx...
  • HTTP协议网络请求状态码,详细~

    千次阅读 2018-08-14 23:23:17
    作为一个互联网开发人员对于一些服务器返回的HTTP状态的意思都必须是了如指掌的,只有将这些状态码一一弄清楚,工作遇到的各种问题才能够处理的得心应手。好了,下面就让我们来了解一下比较常见的HTTP状态码吧! ...
  • HTTP状态码分类(常用HTTP状态码HTTP状态码大全)

    千次阅读 多人点赞 2018-03-07 18:07:30
    作为一个互联网开发人员对于一些服务器返回的HTTP状态的意思都必须是了如指掌的,只有将这些状态码一一弄清楚,工作遇到的各种问题才能够处理的得心应手。好了,下面就让我们来了解一下比较常...
  • http协议详解及htt面试题目,常见的http状态码

    万次阅读 多人点赞 2017-04-20 12:54:18
    HTTP报文是面向文本的,报文的每一个字段都是一些ASCII串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。 HTTP请求报文 一个HTTP请求报文由请求行(request line)、请求头部(header...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 175,885
精华内容 70,354
关键字:

关于http协议中状态码的表示