HTTP状态码

浏览: 1085

HTTP状态码

当服务器收到某项请求时,例如,用户通过浏览器访问你的网页,服务器会向这个浏览器返回一个代码以响应请求。一个代码就称为:HTTP状态码。

同样道理,当搜索引擎的Robot(机器人)或Crawler(爬行器)抓取你的网页时,服务器也会返回HTTP状态码相应请求。

此HTTP状态码提供关于请求状态的信息,告诉访问的浏览器、搜索引擎机器人:Baiduspider、Googlebot等关于你的网站和请求的网页的信息。

HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。

HTTP状态码的作用是:Web服务器用来告诉客户端,发生了什么事。

状态码位于HTTP Response 的第一行中,会返回一个”三位数字的状态码“和一个“状态消息”。 ”三位数字的状态码“便于程序进行处理, “状态消息”更便于人理解。

如下图,  当客户端请求一个不存在的URL的时候, Web服务器会返回 “HTTP/1.1 404 Not Found” 告诉用户/浏览器客户端。 服务器无法找到所请求的URL。


HTTP状态码分类

HTTP状态码被分为五大类, 目前我们使用的HTTP协议版本是1.1, 支持以下的状态码。随着协议的发展,HTTP规范中会定义更多的状态码。

小技巧:  假如你看到一个状态码518, 你并不知道具体518是什么意思。 这时候你只要知道518是属于(5XX,服务器错误就可以了)

已定义范围分类
1XX100-101信息提示
2XX200-206成功
3XX300-305重定向
4XX400-415客户端错误
5XX500-505服务器错误

常见的状态码

一般人只需要了解以下常见的状态码就够了, 如果你想了解更多, 请继续往下看。

200 OK 服务器成功处理了请求(这个是我们见到最多的)
301/302 Moved Permanently(重定向)请求的URL已移走。Response中应该包含一个Location URL, 说明资源现在所处的位置
304 Not Modified(未修改)客户的缓存资源是最新的, 要客户端使用缓存
404 Not Found 未找到资源
501 Internal Server Error服务器遇到一个错误,使其无法对请求提供服务

HTTP状态码大全

1XX 信息性状态码

表示临时响应并需要请求者继续执行操作的状态代码。这些状态码是HTTP 1.1引入的。 对于这些状态码的价值还存在争论 (我个人从来没见过这些状态码, 也没有理解这些状态码。)

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

2XX 成功状态码

表示成功处理了请求的状态代码。客户端发起请求时, 这些请求通常都是成功的。服务器有一组用来表示成功的状态码,分别对应于不同类型的请求。

HTTP状态码 200 OK(成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。(这个是我们见到最多的)
HTTP状态码 201 Created(已创建) 请求成功并且服务器创建了新的资源。
HTTP状态码 202 Accepted(已接受) 服务器已接受请求,但尚未处理。
HTTP状态码 203 Non-Authoritative Information(非权威信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
HTTP状态码 204 No Content(没有内容) 服务器成功处理了请求,但没有返回任何内容。Response中包含一些Header和一个状态行, 但不包括实体的主题内容(没有response body)
HTTP状态码 205 Reset Content(重置内容) 服务器成功处理了请求,但没有返回任何内容。另一个主要用于浏览器的代码。意思是浏览器应该重置当前页面上所有的HTML表单。
HTTP状态码 206 Partial Content(部分内容) 服务器成功处理了部分 GET 请求。

3XX 重定向状态码

表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。重定向状态码用来告诉浏览器客户端,它们访问的资源已被移动, Web服务器发送一个重定向状态码和一个可选的Location Header, 告诉客户端新的资源地址在哪。

浏览器客户端会自动用Location中提供的地址,重新发送新的Request。 这个过程对用户来说是透明的。

301和302 非常相似,一个是永久转移,一个是临时转移。(SEO中,搜索引擎如果碰到301,比如网页A用301重定向到网页B,搜索引擎可以肯定网页A永久性改变地址,就会把网页B当做唯一有效目标)

302,303,307 是一样。这是因为302是HTTP 1.0定义的,HTTP1.1中使用303,307,同时又保留了302。(但在现实中,我们还是用302,我是没见过303和307)所以这一节,我们只需要掌握302, 304 就可以了。

HTTP状态码 300 Multiple Choices(多项选择) 针对请求,服务器可执行多种操作。服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
HTTP状态码 301 Moved Permanently(永久移除) 请求的网页已永久移动到新位置。Response中应该包含一个Location URL, 说明资源现在所处的位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
HTTP状态码 302 Found(已找到/临时移动) 与状态码301类似。但这里的移除是临时的。 客户端会使用Location中给出的URL,重新发送新的HTTP request。服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
HTTP状态码 303 See Other(查看其他位置) 类似302。请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
HTTP状态码 304 Not Modified(未修改) 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。客户的缓存资源是最新的, 要客户端使用缓存
HTTP状态码 305 Use Proxy(使用代理) 请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。代理的地址在Response 的Location中
HTTP状态码 306 未使用 这个状态码当前没使用
HTTP状态码 307 Temporary Redirect(临时重定向) 类似302。服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

4XX客户端错误状态码

这些状态代码表示请求可能出错,妨碍了服务器的处理。有时客户端会发送一些服务器无法处理的东西,比如格式错误的Request, 或者最常见的是, 请求一个不存在的URL。

HTTP状态码 400 Bad Request(错误请求) 服务器不理解请求的语法。告诉客户端,它发送了一个错误的请求。
HTTP状态码 401 Unauthorized(未授权) 请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。需要客户端对自己认证
HTTP状态码 402 Payment Required(要求付款) 这个状态还没被使用,保留给将来用
HTTP状态码 403 Forbidden(禁止) 服务器拒绝请求。
HTTP状态码 404 Not Found(未找到) 服务器找不到请求的网页。
HTTP状态码 405 Method Not Allowed(方法禁用) 禁用请求中指定的方法。
HTTP状态码 406 Not Acceptable(不接受) 无法使用请求的内容特性响应请求的网页。
HTTP状态码 407 Proxy Authentication Required(需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
HTTP状态码 408 Request Timeout(请求超时) 服务器等候请求时发生超时。
HTTP状态码 409 Conflict(冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
HTTP状态码 410 Gone(已删除) 与状态码404类似,如果请求的资源已永久删除,服务器就会返回此响应。
HTTP状态码 411 Length Required(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
HTTP状态码 412 Precondition Failed(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
HTTP状态码 413 Request Entity Too Large(请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
HTTP状态码 414 Request URI Too Long(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
HTTP状态码 415 Unsupported Media Type(不支持的媒体类型) 请求的格式不受请求页面的支持。
HTTP状态码 416 Requested Range Not Satisfiable(请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
HTTP状态码 417 Expectation Failed(未满足期望值) 服务器未满足”期望”请求标头字段的要求。

5XX服务器错误状态码

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

HTTP状态码 500 Internal Server Error(服务器内部错误) 服务器遇到错误,无法完成请求。
HTTP状态码 501 Not Implemented(尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
HTTP状态码 502 Bad Gateway(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
HTTP状态码 503 Service Unavailable(服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
HTTP状态码 504 Gateway Timeout(网关超时) 与状态吗408类似,但是响应来自网关或代理,此网关或代理在等待另一台服务器的响应时出现了超时。
HTTP状态码 505 HTTP Version Not Supported(HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。有些服务器不支持HTTP早期的HTTP协议版本,也不支持太高的协议版本

推荐 0
本文由 不偏离主轨 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册