计算机网络 返回结果的HTTP状态码

目录

状态码告知从服务器端返回的请求结果

2XX成功

200 OK

204 No Content

206 Partial Content

3XX重定向

301 Moved Permanently

302 Found

303 See Other

304 Not Modified

307 Temporary Redirect

 4XX客户端错误

 400 Bad Request

401 Unauthorized

403 Forbidden

404 Not Found

5XX服务器错误

500 Internal Server Error

503 Service Unavailable

常见状态码大全


状态码告知从服务器端返回的请求结果

状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结 果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出 现了错误。

计算机网络 返回结果的HTTP状态码

图:响应的状态码可描述请求的处理结果

状态码如200 OK, 以3位数字和原因短语组成。

数字中的第一位指定了响应类别,后两位无分类。响应类别有以下5 种。

计算机网络 返回结果的HTTP状态码

只要遵守状态码类别的定义,即使改变RFC2616中定义的状态码, 或服务器端自行创建状态码都没问题。

仅记录在RFC2616上的HTTP状态码就达40种,若再加上

WebDAV" (Web-based Distributed Authoring and V"rsioning, 基于万维网 的分布式创作和版本控制) (RFC4918、5842)和附加HTTP状态码

(RFC6585)等扩展,数量就达60余种。别看种类繁多,实际上经 常使用的大概只有14种。接下来,我们就介绍一下这些具有代表性 的14个状态码。

2XX成功

2XX的响应结果表明请求被正常处理了。

200 OK

计算机网络 返回结果的HTTP状态码

表示从客户端发来的请求在服务器端被正常处理了。

在响应报文内,随状态码一起返回的信息会因方法的不同而发生改 变。比如,使用GET方法时,对应请求资源的实体会作为响应返 回;而使用HEAD方法时,对应请求资源的实体首部不随报文主体 作为响应返回(即在响应中只返回首部,不会返回实体的主体部 分)。

204 No Content

计算机网络 返回结果的HTTP状态码

该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中 不含实体的主体部分。另外,也不允许返回任何实体的主体。比如, 当从浏览器发出请求处理后,返回204响应,那么浏览器显示的页面 不发生更新。

一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。

206 Partial Content

计算机网络 返回结果的HTTP状态码

该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的 GET请求。响应报文中包含由Content- Range指定范围的实体内容。

3XX重定向

3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请 求。

301 Moved Permanently

计算机网络 返回结果的HTTP状态码

永久性重定向。该状态码表示请求的资源已被分配了新的URI, 以后 应使用资源现在所指的URI。也就是说,如果已经把资源对应的URI 保存为书签了,这时应该按Location首部字段提示的URI重新保存。

像下方给出的请求URI, 当指定资源路径的最后忘记添加斜杠"/"'就 会产生301状态码。

计算机网络 返回结果的HTTP状态码

302 Found

计算机网络 返回结果的HTTP状态码

临时性重定向。该状态码表示请求的资源已被分配了新的URI, 希望 用户(本次)能使用新的URI访问。

和301 Moved Permanently状态码相似,但302状态码代表的资源不 是被永久移动,只是临时性质的。换句话说,已移动的资源对应的 URI将来还有可能发生改变。比如,用户把URI保存成书签,但不会 像301状态码出现时那样去更新书签,而是仍旧保留返回302状态码 的页面对应的URI。

303 See Other

计算机网络 返回结果的HTTP状态码

该状态码表示由于请求对应的资源存在着另一个URI, 应使用GET 方法定向获取请求的资源。

303状态码和302 Found状态码有着相同的功能,但303状态码明确 表示客户端应当采用GET方法获取资源,这点与302状态码有区 别。

比如,当使用POST方法访问CGI程序,其执行后的处理结果是希望 客户端能以GET方法重定向到另一个URI上去时,返回303状态 码。虽然302 Found状态码也可以实现相同的功能,但这里使用303状态码是最理想的。

采用的是HTTP/1.1, 而许多HTTP/1.1版以前的浏览器不能正确理解303状 态码。虽然RFC 1945和RFC 2068规范不允许客户端在重定向时改变请求的方 法,但是很多现存的浏览器将302响应视为303响应,并且使用GET方式访问在 Location中规定的URI, 而无视原先请求的方法。所以说这里使用303是最 理想的。

当301、302、303响应状态码返回时,几乎所有的浏览器都会把POST改成GET, 并删除请求报文内的主体,之后请求会自动再次 发送。

301、302标准是禁止将POST方法改变成GET方法的,但实际使 用时大家都会这么做。

304 Not Modified

计算机网络 返回结果的HTTP状态码

该状态码表示客户端发送附带条件的请求(附带条件的请求是指采用GET方法的请求报文中包含If-Match, If-Modified­Since, If-None-Match, If-Range, If-Urnnodified-Since中任一首部)时,

服务器端允许请求访 问资源,但未满足条件的情况。

304状态码返回时,不包含任何响应 的主体部分

304虽然被划分在3XX类别中,但是和重定向没有关 系。

307 Temporary Redirect

临时重定向。该状态码与302 Found有着相同的含义。尽管302标准禁止POST变换成GET, 但实际使用时大家并不遵守。

307会遵照浏览器标准,不会从POST变成GET。但是,对于处理响 应时的行为,每种浏览器有可能出现不同的情况。

 4XX客户端错误

4XX的响应结果表明客户端是发生错误的原因所在。

 400 Bad Request

计算机网络 返回结果的HTTP状态码

该状态码表示请求报文中存在语法错误。

当错误发生时,需修改请求 的内容后再次发送请求。另外,浏览器会像200 OK一样对待该状态 码。

401 Unauthorized

计算机网络 返回结果的HTTP状态码

该状态码表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外若之前已进行过1次请求,则表示 用户认证失败。

返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质询(challenge)用户信息。当浏览器初次接收 到401响应,会弹出认证用的对话窗口。

403 Forbidden

计算机网络 返回结果的HTTP状态码

该状态码表明对请求资源的访问被服务器拒绝了。

服务器端没有必要 给出拒绝的详细理由,但如果想作说明的话,可以在实体的主体部分对原因进行描述,这样就能让用户看到了。

未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发 送源IP地址试图访问)等列举的情况都可能是发生403的原因。

404 Not Found

计算机网络 返回结果的HTTP状态码

该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服 务器端拒绝请求且不想说明理由时使用。

5XX服务器错误

5XX的响应结果表明服务器本身发生错误。

500 Internal Server Error

计算机网络 返回结果的HTTP状态码

该状态码表明服务器端在执行请求时发生了错误。也有可能是Web 应用存在的bug或某些临时的故障。

503 Service Unavailable

计算机网络 返回结果的HTTP状态码

该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法 处理请求。如果事先得知解除以上状况需要的时间,最好写入RetryAfter首部字段再返回给客户端。

不少返回的状态码响应都是错误的,但是用户可能察觉不到这点。 比如Web应用程序内部发生错误,状态码依然返回200 OK, 这种 情况也经常遇到。

 

常见状态码大全

状态码 消息 描述
100 Continue 只有请求的一部分已经被服务器接收,但只要它没有被拒绝,客户端应继续该请求。
101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200 OK 请求成功。
201 Created 已创建。成功请求并创建了新的资源
202 Accepted 已接受。已经接受请求,但未处理完成
203 Non-authoritative Information 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205 Reset Content 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206 Partial Content 部分内容。服务器成功处理了部分GET请求
300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择, 最多五个地址。
301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI。(所请求的页面已经临时转移到一个新的 URL)
303 See Other 查看其它地址。与301类似。(即所请求的页面可以在另一个不同的 URL 下被找到)
304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305 Use Proxy 使用代理。所请求的资源必须通过代理访问
307 Temporary Redirect 临时重定向。与302类似。
400 Bad Request 客户端请求的语法错误,服务器无法理解
401 Unauthorized 请求要求用户的身份认证
402 Payment Required 您还不能使用该代码。
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405 Method Not Allowed 客户端请求中的方法被禁止
406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求
407 Proxy Authentication Required 在请求送达之前,您必须使用代理服务器的验证。
408 Request Time-out 请求需要的时间比服务器能够等待的时间长,超时。
409 Conflict 服务器完成客户端的PUT请求时可能返回此代码,服务器处理请求时发生了冲突
410 Gone 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411 Length Required Content-Length 未定义。服务器无法处理客户端发送的不带 Content-Length 的请求信息。
412 Precondition Failed 请求中给出的先决条件被服务器评估为 false。
413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414 Request-URI Too Large 服务器不接受该请求,因为 URL 太长。当您转换一个 "post" 请求为一个带有长的查询信息的 "get" 请求时发生。
415 Unsupported Media Type 服务器不接受该请求,因为媒体类型不被支持。
416 Requested range not satisfiable 客户端请求的范围无效
417 Expectation Failed 服务器无法满足Expect的请求头信息
500 Internal Server Error 服务器内部错误,无法完成请求
501 Not Implemented 服务器要么不识别请求方法,要么缺乏满足请求的能力。
502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求(网关超时)
505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理