HTTP可能大家都熟悉,就是超文本传输协议。浏览器通过HTTP与WEB Server通讯(也有一些其它软件比如IM使用HTTP协议传递数据),把我们的请求(HTTP Request)传递给服务器,服务器响应这个请求,返回应答(HTTP Response)以及我们需要的数据。大致就是这个样子了。
如果我们请求啥,服务器就返回啥,是乎就不需要HTTP Status codes了。但是事情往往不是那么简单。比如我们请求一个网页页面,可是服务器不存在这个页面,或者这个页面被转移到其它地方,或者服务器禁止我们查看 这个页面等等,所以为了便于浏览器处理这些正确与不正确的情况,HTTP用Status codes来表示请求(HTTP Request)在服务器端被处理的情况。Status codes通过应答(HTTP Response)返回给浏览器,浏览器根据这个作相应的处理。
HTTP Status codes的分类
既然有正确和错误的状态,HTTP定义两大类状态码是不是就可以了?人家制订协议的可是专家(不象我是冒充的),想得比我们要周全,要长远。HTTP 1.1中定义了5大类Status codes,分别是:
Informational
意义:信息
范围:1XX
Successful
意义:成功
范围:2XX
Redirection
意义:重定向
范围:3XX
Client Error
意义:客户端错误
范围:4XX
Server Error
意义:服务器错误
范围:5XX
您看看人家想得多周到啊,真专家就是真专家。
常见HTTP Status codes简介
下面简单介绍一下我们经常碰到的HTTP Status codes。
也许是我孤陋寡闻,常遇到的HTTP Status codes就那么几个,见笑啦。
Successful
200 - OK:OK
这个是最常见的啦(也许我们不会直接看到,但是如果您使用一些抓包工具,大多数http应答中都有这个)。意义很简单,就是说服务器收到并理解客户端的请求而且正常处理了。
206 - Partial Content:部分内容。
这个也经常发生。很容易让大家发懵。
通俗点说就是如果客户端请求文档(图像,文本,声音等等)的部分内容,服务器正常处理,那么就返回206。大致意思就是它请求的时候,除了指定请求的内容,还指定了偏移量以及长度。
部分内容,没搞错吧?呵呵没搞错,现在很多浏览器以及软件支持断点续传就是靠这个的。呵呵,以后看到206不要怕了。
Redirection
301 - Moved Permanently:永久移动。
这个状态码是指客户端要请求的资源已经被永久的转移到一个新的地方了。这个应答(HTTP Response)里边同时包含了资源的新地址。它告诉客户端,如果下次还想要这个资源,那么就用新的地址去取。
302 Found:临时重定向。
这个状态码是指客户端要请求的资源临时放到一个新地方了。同样,应答中也包含了资源的新地址。
307 - Temporary Redirect:临时重定向。(如果不去实现协议或者做相关开发,我们大致理解它很302差不多就可以啦)
有一篇谈重定向的文章《从Business.com遭封看302重定向》很有意思
我们转载了一份,地址:http://bbs.netpu.net/viewthread.php?tid=810
Client Error
400 - Bad Request:错误请求
就是请求的语法错误,服务器无法理解。
401 – Unauthorized:未授权
当服务器返回401 Code,就是告诉说客户端访问指定资源以前,必须通过服务器的授权。
403 – Forbidden:禁止访问
就是不允许访问某些资源。
404 - Not Found:找不到
找不到客户端请求的内容
Server Error
500 - Internal Server Error
服务器内部错误。
官方的资料地址:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
HTTP Status Code
常见的状态码:
HTTP: Status 200 – 服务器成功返回网页HTTP: Status 404 – 请求的网页不存在HTTP: Status 503 – 服务不可用
详解:
说明: HTTP: Status 1xx (临时响应) ->表示临时响应并需要请求者继续执行操作的状态代码。 详细代码及说明: HTTP: Status 100 (继续) -> 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 HTTP: Status 101 (切换协议) -> 请求者已要求服务器切换协议,服务器已确认并准备切换。
说明: HTTP Status 2xx (成功) ->表示成功处理了请求的状态代码; 详细代码及说明: HTTP Status 200 (成功) -> 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。 HTTP Status 201 (已创建) -> 请求成功并且服务器创建了新的资源。 HTTP Status 202 (已接受) -> 服务器已接受请求,但尚未处理。 HTTP Status 203 (非授权信息) -> 服务器已成功处理了请求,但返回的信息可能来自另一来源。 HTTP Status 204 (无内容) -> 服务器成功处理了请求,但没有返回任何内容。 HTTP Status 205 (重置内容) -> 服务器成功处理了请求,但没有返回任何内容。 HTTP Status 206 (部分内容) -> 服务器成功处理了部分 GET 请求。
说明: HTTP Status 4xx (请求错误) ->这些状态代码表示请求可能出错,妨碍了服务器的处理。 详细代码说明: HTTP Status 400 (错误请求) ->服务器不理解请求的语法。 HTTP Status 401 (未授权) ->请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。 HTTP Status 403 (禁止) -> 服务器拒绝请求。 HTTP Status 404 (未找到) ->服务器找不到请求的网页。 HTTP Status 405 (方法禁用) ->禁用请求中指定的方法。 HTTP Status 406 (不接受) ->无法使用请求的内容特性响应请求的网页。 HTTP Status 407 (需要代理授权) ->此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。 HTTP Status 408 (请求超时) ->服务器等候请求时发生超时。 HTTP Status 409 (冲突) ->服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。 HTTP Status 410 (已删除) -> 如果请求的资源已永久删除,服务器就会返回此响应。 HTTP Status 411 (需要有效长度) ->服务器不接受不含有效内容长度标头字段的请求。 HTTP Status 412 (未满足前提条件) ->服务器未满足请求者在请求中设置的其中一个前提条件。 HTTP Status 413 (请求实体过大) ->服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。 HTTP Status 414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。 HTTP Status 415 (不支持的媒体类型) ->请求的格式不受请求页面的支持。 HTTP Status 416 (请求范围不符合要求) ->如果页面无法提供请求的范围,则服务器会返回此状态代码。 HTTP Status 417 (未满足期望值) ->服务器未满足”期望”请求标头字段的要求。
HTTP Status 5xx (服务器错误) ->这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。 代码详细及说明: HTTP Status 500 (服务器内部错误) ->服务器遇到错误,无法完成请求。 HTTP Status 501 (尚未实施) ->服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。 HTTP Status 502 (错误网关) ->服务器作为网关或代理,从上游服务器收到无效响应。 HTTP Status 503 (服务不可用) -> 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。 HTTP Status 504 (网关超时) ->服务器作为网关或代理,但是没有及时从上游服务器收到请求。 HTTP Status 505 (HTTP 版本不受支持) -> 服务器不支持请求中所用的 HTTP 协议版本。
http://www.cnblogs.com/DeasonGuan/articles/Hanami.html