http状态代码含义

in 互联网技术 with 0 comment  访问: 4,663 次

HTTP 状态代码表示什么意思?

如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器将会返回 HTTP 状态码响应请求。

此状态代码提供关于请求状态的信息, 告诉 Googlebot 关于您的网站和请求的网页的信息。

一些常见的状态代码为:

下面提供 HTTP 状态代码的完整列表。 点击链接可了解详情。 您也可以访问HTTP状态代码上的 W3C页获取更多信息

1xx 临时响应

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

状态码 代表意义 详解
100 继续 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101 切换协议 请求者已要求服务器切换协议,服务器已确认并准备切换。

2xx 成功

表示成功处理了请求的状态代码。

状态码 代表意义 详解
200 成功 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。 如果针对您的 robots.txt 文件显示此状态代码,则表示 Googlebot 已成功检索到该文件。
201 已创建 请求成功并且服务器创建了新的资源
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 请求的 301 代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉 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 需要代理授权 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。 如果服务器返回此响应,还会指明请求者应当使用的代理。
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协议版本。

其他状态码

一般情况下,错误信息代码的头一位或头两位数字代表错误的类型,其中第一位为1表示一般性信息,第一位为2表示成功的信息,如请求被成功地执行完成,第一位为3表示重定向错误,比如要访问的目标已经被转移到其它位置,第一位为4表示是客户端的错误,比如用户身份不合法或请求的语法不正确,第一位为5表示是服务端的错误,如代理服务器故障或者不支持用户的请求,前两位为10表示连接错误,如连接被断开或超时,前两位为11表示是主机的错误,比如找不到主机,前两位为12表示是代理错误,如递归代理等。

临时应答,也就是消息性质的应答,标志了对方服务器正在处理请求,并且还没有决定最后的应答。如果服务器处理请求需要花200ms以上才能产生终结应答的时候,它应当发送一个1xx应答。

注意1xx应答并不是可靠传输的。他们不会导致客户端传送一个ACK应答。临时性质的(1xx)应答可以包含消息体,包含会话描述。

1.1 100 Trying

这个应答表示下一个节点的服务器已经接收到了这个请求并且还没有执行这个请求的特定动作(比如,正在打开数据库的时候)。

这个应答,就像其他临时应答一样,种植了UAC重新传送INVITE请求。100(Trying)应答和其他临时应答不同的是,在这里,它永远不会被有状态proxy转发到上行流中。

1.2 180 Ringing

UA收到INVITE请求并且试图提示给用户。这个应答应当出世化一个本地回铃。

**1.3 818 Call is Being Forwarded(呼叫被转发) **

服务器可以用这个应答代码来表示呼叫正在转发到另一个目的地集合。

**1.4 182 Queued **

当呼叫的对方暂时不能接收呼叫的时候,并且服务器决定将呼叫排队等候,而不是拒绝呼叫的时候,那么就应当发出这个应答。当被叫方一旦恢复接收呼叫,他会返回合适的终结应答。对于这个呼叫状态,可以有一个表示原因的短语,比如:5 calls queued;expected waiting time is 15minutes。服务器可以给出好几个182(Queued)应答告诉呼叫方排队的情况(比如排队靠前了等等)。

**1.5 183 会话进度 **

183(Session Progress)应答用于提示建立对话的进度信息。Reason-Phrase(表达原因的句子)、头域或者消息体可以用于提示呼叫进度的更消息的信息。

2成功信息2xx 这个应答表示请求是成功的。

2.1 200 OK

请求已经处理成功。这个信息取决于不同方法的请求的应答。

3 转发请求3XX
3xx系列的应答是用于提示用户的新位置信息的,或者为了满足呼叫而转发的额外服务地点。

3.1 300 Multiple Choices
请求的地址有多个选择,每个选择都有自己的地址,用户或者(UA)可以选择合适的通讯终端,并且转发这个请求到这个地址。

应答可以包含一个具有每一个地点的在Accept请求头域中允许的资源特性,这样用户或者UA可以选择一个最合适的地址来转发请求。没有未这个应答的消息体定义MIME类型。

这些地址选择也应当在Contact头域中列出(20.10节)。不同于HTTP,SIP应答可以包含多个Contact头域或者一个Contact头域中具有一个地址列表。UA可以使用Contact头域来自动转发或者要求用户确认转发。不过,本规范没有定义自动转发的标准。

如果被叫方可以在多个地址被找到,并且服务器不能或者不愿意转发请求的时候,可以使用这个应答来给呼叫方。

3.2 301 Moved Permently
当不能在Request-URI指定的地址找到用户的时候,请求的客户端应当使用Contact头域(20.10)所指出的新的地址重新尝试。请求者应当用这个新的值来更新本地的目录,地址本,和用户地址cache,并且在后续请求中,发送到这个/这些列出的地址。

3.3 302 Moved Temporarily
请求方应当把请求重新发到这个Contact头域所指出的新地址(20.10)。新请求的Request-URI应当用这个应答的Contact头域所指出的值。

在应答中的Expires(20.19节)或者Contact头域的expires参数定义了这个Contact URI的生存周期。UA或者proxy在这个生存周期内cache这个URI。如果没有严格的有效时见,那么这个地址仅仅本次有效,并且不能在以后的事务中保存。

如果cache的Contact头域的值失败了,那么被转发请求的Request-URI应当再次尝试一次。临时URI可以比超时时间更快的失效,并且可以有一个新的临时URI。

3.4 305 Use Proxy
请求的资源必须通过Contact头域中指出的proxy来访问。Contact头域指定了一个proxy的URI。接收到这个应答的对象应当通过这个proxy重新发送这个单个请求。305(UseProxy)必须是UAS产生的。

3.5 380 Alternative Service
呼叫不成工,但是可以尝试另外的服务。另外的服务在应答的消息体中定义。消息体的格式在这里没有定义,可能在以后的规范中定义。

4 请求失败4xx
4xx应答定义了特定服务器响应的请求失败的情况。客户端不应当在不更改请求的情况下重新尝试同一个请求。(例如,增加合适的认证信息)。不过,同一个请求交给不同服务器也许就会成功。

4.1 400 Bad Request
请求中的语法错误。Reason-Phrase应当标志这个详细的语法错误,比如”Missing Call-ID header field”。

4.2 401 Unauthorized
请求需要用户认证。这个应答是由UAS和注册服务器产生的,当407(Proxy Authentication Required)是proxy服务器产生的。

4.3 402 Payment Required
保留/以后使用

4.4 403 Forbidden
服务端支持这个请求,但是拒绝执行请求。增加验证信息是没有必要的,并且请求应当不被重试。

4.5 404 Not Found
服务器返回最终信息:用户在Request-URI指定的域上不存在。当Request-URI的domain和接收这个请求的domain不匹配的情况下, 也会产生这个应答。

4.6 405 Method Not Allowed
服务器支持Request-Line中的方法,但是对于这个Request-URI中的地址来说,是不允许应用这个方法的。
应答必须包括一个Allow头域,这个头域包含了指定地址允许的方法列表。

4.7 Not Acceptable
请求中的资源只会导致产生一个在请求中的Accept头域外的,内容无法接收的错误。

4.8 407 Proxy Authentication Required
这个返回码和401(Unauthorized)很类四,但是标志了客户端应当首先在proxy上通过认证。SIP对认证的访问请参见26节和22.3节。

这个返回码用于应用程序访问通讯网关(比如,电话网关),而很少用于被叫方要求认证。

4.9 408 Request Timeout
在一段时间内,服务器不能产生一个终结应答,例如,如果它无法及时决定用户的位置。客户端可以在稍后不更改请求的内容然后重新尝试请求。

4.10 410 Gone
请求的资源在本服务器上已经不存在了,并且不知道应当把请求转发到哪里。这个问题将会使永久性的。如果服务器不知道,或者不容易检测,这个资源消失是临时性质的还是永久性质的,那么应当返回一个404(Not Found)。

4.11 413请求实体过大。
服务器拒绝处理请求,因为这个请求的实体超过了服务器希望或者能够处理的大小。这个服务器应当关闭连接避免客户端重发这个请求。
如果这个情况是暂时的,那么服务端应当包含一个Retry-After头域来表明这是一个暂时的故障,并且客户端可以过一段时间再次尝试。

4.12 414 Request-URI Too Long
服务器拒绝这个请求,因为Request-URI超过了服务器能够处理的长度。

4.13 415 Unsupported Media Type
服务器由于请求的消息体的格式本服务器不支持,所以拒绝处理这个请求。这个服务器必须根据内容的故障类型,返回一个Accept,Accpet-Encoding,或者Accept-Language头域列表。UAC根据8.1.3.5节定义的方法处理这个应答。

4.14 416 Unsupported URI Scheme
服务器由于不支持Request-URI中的URI方案而终止处理这个请求。客户端处理这个应答参照8.1.3.5。

4.15 Bad Extension
服务器不知道在请求中的Proxy-Require(20.29)或者Require(20.32)头域所指出的协议扩展。服务器必须在Unsupported头域中列出不支持的扩展。UAC处理这个应答请参见8.1.3.5

4.16 421Extension Required
UAS需要特定的扩展来处理这个请求,但是这个扩展并没有在请求的Supported头域中列出。具有这个应答码的应答必须包含一个Require头域列出所需要的扩展。

UAS不应当使用这个应答除非它真的不能给客户端提供有效的服务。相反,如果在Support头域中没有列出需要的扩展,服务器应当根据基准的SIP兼容的方法和客户端支持的扩展来进行处理。

4.17 423 Interval Too Brief
服务器因为在请求中设置的资源刷新时间(或者有效时间)过短而拒绝请求。这个应答可以用于注册服务器来拒绝那些Contact头域有效期过短的注册请求。这个应答的用法和相关的Min-Expires头域在10.2.8,10.3,20.23节中介绍和说明。

4.18 480 Temporarily Unavailable
请求成功到达被叫方的终端系统,但是被叫方当前不可用(例如,没有登陆,或者登陆了但是状态是不能通讯,或者有”请勿打扰”的标记)。应答应当在Retry-After中标志一个合适的重发时间。这个用户也有可能在其他地方是有效的(在本服务器中不知道)。Reason-Phrase(原因短句)应当提示更详细的原因,为什么被叫方暂时不可用。这个值应当是可以被UA设置的。

状态码486(Busy Here)可以用来更精确的表示本请求失败的特定原因。

这个状态码也可以是转发服务或者proxy服务器返回的,因为他们发现Request-URI指定的用户存在,但是没有一个给这个用户的合适的当前转发的地址。

4.19 481 Call/Transaction Does Not Exist

这个状态表示了UAS接收到请求,但是没有和现存的对话或者事务匹配。

4.20 482 Loop Detected
服务器检测到了一个循环(16.3/4)

4.21 483 Too Many Hops
服务器接收到了一个请求包含的Max-Forwards(20.22)头域是0

4.22 484 Address InComplete
服务器接收到了一个请求,它的Request-URI是不完整的。在原因短语中应当有附加的信息说明。这个状态码可以和拨号交叠。在和拨号交叠中,客户端不知道拨号串的长度。它发送增加长度的字串,并且提示用户输入更多的字串,直到不在出现484(Address Incomplete)应答为止。

4.23 485 Ambiguous

Request-URI是不明确的。应答可以在Contact头域中包含一个可能的明确的地址列表。这个提示列表肯囊个在安全性和隐私性对用户或者组织造成破坏。必须能够由配置决定是否以404(NotFound)代替这个应答,又或者禁止对不明确的地址使用可能的选择列表。

给带有Request-URI的请求的一个应答例子:

sip: lee@example.com: 
SIP/2.0 485 Ambiguous 
Contact: Carol Lee 
Contact: Ping Lee 
Contact: Lee M.Foote 

部分email和语音邮箱系统提供了这个功能。这个状态码和3xx状态码不同:对于300来说,它是假定同一个人或者服务有不同的地址选择。所以对3xx来说,自动选择系统或者连续查找就有效,但是对485(Ambiguous)应答来说,一定要用户的干预。

4.24 486 Busy Here

当成功联系到被叫方的终端系统,但是被叫方当前在这个终端系统上不能接听这个电话,那么应答应当回给呼叫方一个更合适的时间在Retry-After头域重试。这个用户也许在其他地方有效,比如电话邮箱系统等等。如果我们知道没有其他终端系统能够接听这个呼叫,那么应当返回一个状态码600(Busy Everywhere)。

4.25 487 Request Terminated

请求被BYE或者CANCEL所终止。这个应答永远不会给CANCEL请求本身回复。

4.26 488 Not Acceptable Here

这个应答和606(Not Acceptable)有相同的含义,但是只是应用于Request-URI所指出的特定资源不能接受,在其他地方请求可能可以接受。

包含了媒体兼容性描述的消息体可以出现在应答中,并且根据INVITE请求中的Accept头域进行规格化(如果没有Accept头域,那么就是application/sdp)。这个应答就像给OPTIONS请求的200(OK)应答的消息体一样。

4.27 491 Request Pending

在同一个对话中,UAS接收到的请求有一个依赖的请求正在处理。

4.28 493 Undecipherable

UAS接收到了一个请求,包含了一个加密的MIME,并且不知道或者没有提供合适的解密密钥。这个应答可以包含单个包体,这个包体包含了合适的公钥,这个公钥用于给这个UAS通讯中加密包体使用的。细节描述在23.2节。

5 Server Failure 5xx

5xx应答是当服务器本身故障的时候给出的失败应答。

5.1 500 Server Internal Error

服务器遇到了未知的情况,并且不能继续处理请求。客户端可以显示特定的错误情况,并且可以在几秒种以后重新尝试这个请求。
如果这个情况是临时的,服务器应当在Retry-After头域标志客户端过多少秒钟之后重新尝试这个请求。

5.2 501 Not Implemented

服务器没有实现相关的请求功能。当UAS不认识请求的方法的时候,并且对每一个用户都无法支持这个方法的时候,应当返回这个应答。(proxy不考虑请求的方法而转发请求)。

注意405(Method Not Allowed)是因为服务器实现了这个请求方法,但是这个请求方法在特定请求中不被支持。

5.3 502 Bad Gateway

如果服务器,作为gateway或者proxy存在,从下行服务器上接收到了一个非法的应答(这个应答对应的请求是本服务器为了完成请求而转发给下行服务器的)。

5.4 503 Service Unavailable

由于临时的过载或者服务器管理导致的服务器暂时不可用。这个服务器可以在应答中增加一个Retry-After来让客户端重试这个请求。如果没有Retry-After指出,客户端必须就像收到了一个500(Server Internal Error)应答一样处理。

客户端(proxy或者UAC)收到503(Service Unavailable)应当尝试转发这个请求到另外一个服务器处理。并且在Retry-After头域中指定的时间内,不应当转发其他请求到这个服务器。

作为503(Service Unavaliable)的替代,服务器可以拒绝连接或者把请求扔掉。

5.5 504 Server Time-out

服务器在一个外部服务器上没有收到一个及时的应答。这个外部服务器是本服务器用来访问处理这个请求所需要的。如果从上行服务器上收到的请求中的Expires头域超时,那么应当返回一个408(Request TimeOut)错误。

5.6 505 Version Not Supported

服务器不支持对应的SIP版本。服务器是无法处理具有客户端提供的相同主版本号的请求,就会导致这样的错误信息。

5.7 Message To Large

服务器无法处理请求,因为消息长度超过了处理的长度。

6 Global Failures 6xx

6xx应答意味这服务器给特定用户有一个最终的信息,并不只是在Request-URI的特定实例有最终信息。

6.1 600 Busy Everywhere

成功联系到被叫方的终端系统,但是被叫方处于忙的状态,并不打算接听电话。这个应答可以通过增加一个Retry-After头域更明确的告诉呼叫方多久以后可以继续呼叫。如果被叫方不希望提示拒绝的原因,被叫方应当使用603(Decline)。只有当终端系统知道没有其他终端节点(比如语音邮箱系统)能够访问到这个用户的时候才能使用这个应答。否则应当返回一个486(Busy Here)的应答。

6.2 603 Decline

当成功访问到被叫方的设备,但是用户明确的不想应答。这个应答可以通过增加一个Retry-After头域更明确的告诉呼叫方多久以后可以继续呼叫。只有当终端知道没有其他任何终端设备能够响应这个呼叫的势能才能给出这个应答。

6.3 604 Does Not Exists Anywhere

服务器验证了在请求中Request-URI的用户信息,哪里都不存在

6.4 606 Not Acceptable

当成功联系到一个UA,但是会话描述的一些部分比如请求的媒体,带宽,或者地址类型不被接收。

606(Not Acceptable)

应答意味着用户希望通讯,但是不能充分支持会话描述。606(Not Acceptable)应答可以在Warning头域中包含一个原因列表,用于解释为何会话描述不能被支持。
在应答中,可以出现一个包含媒体兼容性描述的消息体,这个消息体的格式根据INVITE请求中的Accept头域指出的格式进行规格化(如果没有Accept头域,那么就是application/sdp),就像给OPTIONS亲求的200(OK)应答中的消息一样。

我们希望这些媒体协商不要经常需要,并且当一个新用户被邀请加入已经存在的会话的时候,这个媒体协商可能不需要。这取决于邀请的初始化者是否需对606(Not Acceptable)进行处理。 这个应答只有当客户端知道没有其他终端能够处理这个请求的时候才能发出。

文章记录资料参考:HTTP 状态代码表示什么意思?
day1.png

WeZan