首页 > 代码库 > 《HTTP权威指南》笔记之 网络状态码
《HTTP权威指南》笔记之 网络状态码
状态码分为五大类,
(1)100 ~ 199 信息性状态码
状态码 | 含义 | 原因短语 |
100 | 说明服务器收到了请求的初始部分,请客户端继续发送 | Continue |
101 | 说明服务器正在根据客户端的指定,将协议转换成为 Update首部所列的协议 | Switching Protocol |
(2)200 ~ 299 成功状态码
状态码 | 原因短语 | 含义 |
200 | OK | 请求没问题 |
201 | Ctreated | 用于创建服务器对象的请求(如PUT) |
202 | Accepted | 请求已被接受,但服务器还未对其执行任何动作,不保证服务器会完成这个请求 |
203 | Non-Authoritative | 实体首部包含的信息不是来自于源端服务器,而是来自资源的一份副本 |
204 | No content | 报文中没有包含实体内容 |
205 | Reset Content | 用于浏览器的代码,负责告知浏览器清除当前页面中所有的HTML表单元素 |
206 | Partial Content | 说明成功执行了一部分(或某个范围内)的请求,但尚未完全完成请求 |
(3)300 ~ 399 重定向状态码
所谓重定向就是收到客户端请求了,但是由于客户端请求的资源已经被移动了位置(而客户端不知道),因此要么告知客户端使用替代位置来访问他们所感兴趣的资源,要么提供一个替代的响应而不是资源的内容。
可以通过重定向状态码来对资源的应用程序本地副本与源端服务器上的资源进行验证对比,是不是最新的资源。
状态码 | 原因短语 | 含义 |
300 | Multiple Choices (多种选择) | 当客户端请求的URL实际上指向多个资源的时候返回此码,通常会附带可供选择的选项,让客户端选择,如某个URL请求的资源含有中文和英文的两个版本,服务器不知道客户端需要哪一个,所以返回此码 |
301 | Moved Permanently(永久移动) | 当请求的URL已被永久地移除时候使用,返回的Location首部中应该会包含资源的新地方URL |
302 | Found(临时移动) | 与301类似,但是由于不是永久移动,将来可能还会移回去原处,因此现在客户端应该使用location首部给出的URL来临时定位资源,以后再次使用还是用原来的老URL . |
303 | See other (参看其他位置) | 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。对于除 HEAD 之外的所有请求,服务器会自动转到其他位置。 |
304 | Not Modified (未被修改) | 客户端通过所包含的请求首部,使得请求变成有条件的,自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。服务器可以告诉 Googlebot 自从上次抓取后网页没有变更,进而节省带宽和开销。 |
305 | Use Proxy | 出于安全考虑,客户端不能直接访问该资源,要通过代理来访问,代理的位置由Location的首部给出。 |
306 | 未使用 |
|
307 | Temporary Redirect(临时重定向) | 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。此代码与响应 GET 和 HEAD 请求的 <a href=http://www.mamicode.com/answer.py?answer=>301>代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉 Googlebot某个页面或网站已经移动,因为 Googlebot会继续抓取原有位置并编制索引。 |
你可能发现了,302和307几乎是一样的作用。其实这些区别在于 HTTP 1.0 与 1.1版本的不一样所导致的。
为了避免与HTTP 1.0冲突,因为当需要临时重定向时,HTTP 1.0希望给客户端一个302,而HTTP 1.1规范则使用303来处理这种情况。如此冲突了。
为了把302状态码保留起来,于是使用307给 HTTP 1.1使用来重定向。
(4)400 ~ 499 客户端错误状态码
有时候,客户端会发送一些服务器无法处理的东西,如格式错误的请求报文,或是一个根本不存在的URL ,这时候服务器就会返回这样的错误码。
400(错误请求) | 服务器不理解请求的语法。 |
401(未授权) | 请求要求身份验证。对于登录后请求的网页,服务器可能返回此响应。 |
403(禁止) | 服务器拒绝请求。如果您在 Googlebot尝试抓取您网站上的有效网页时看到此状态码(您可以在 Google网站管理员工具诊断下的网络抓取页面上看到此信息),可能是您的服务器或主机拒绝了 Googlebot 访问。 |
404(未找到) | 服务器找不到请求的网页。例如,对于服务器上不存在的网页经常会返回此代码。 |
405(方法禁用) | 禁用请求中指定的方法。 |
406(不接受) | 无法使用请求的内容特性响应请求的网页。 |
407(需要代理授权) | 此状态码与401类似,但指定请求者应当授权使用代理。如果服务器返回此响应,还表示请求者应当使用代理。 |
408(请求超时) | 服务器等候请求时发生超时。 |
409(冲突) | 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。服务器在响应与前一个请求相冲突的 PUT请求时可能会返回此代码,以及两个请求的差异列表。 |
410(已删除) | 如果请求的资源已永久删除,服务器就会返回此响应。该代码与 404(未找到)代码类似,但在资源以前存在而现在不存在的情况下,有时会用来替代 404 代码。如果资源已永久移动,您应使用 301指定资源的新位置。 |
411(需要有效长度) | 服务器不接受不含有效内容长度标头字段的请求。 |
412(未满足前提条件) | 服务器未满足请求者在请求中设置的其中一个前提条件。 |
413(请求实体过大) | 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。 |
414(请求的 URI过长) | 请求的 URI(通常为网址)过长,服务器无法处理。 |
415(不支持的媒体类型) | 请求的格式不受请求页面的支持。 |
416(请求范围不符合要求) | 如果页面无法提供请求的范围,则服务器会返回此状态码。 |
417(未满足期望值) | 服务器未满足”期望”请求标头字段的要求。 |
(5)500 ~ 599 服务器错误状态码
这些状态码表示服务器在处理请求时发生内部错误。这些错误是服务器本身的错误,而不是请求出错(本身请求是有效正确的),如服务器本身技术上的bug。
500(服务器内部错误) | 服务器遇到错误,无法完成请求。 |
501(尚未实施) | 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。 |
502(错误网关) | 服务器作为网关或代理,从上游服务器收到无效响应。 |
503(服务不可用) | 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。 |
504(网关超时) | 服务器作为网关或代理,但是没有及时从上游服务器收到请求。 |
505(HTTP版本不受支持) | 服务器不支持请求中所用的 HTTP协议版本。 |