HTTP状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
下面是常见的HTTP状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
400 - 请求无效
403 - 禁止访问
HTTP状态码分类
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
分 类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
HTTP状态码列表:
状态码 | 状态码英文名称 | 中文描述 |
---|---|---|
100 | Continue | 继续。客户端应继续其请求 |
101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 |
200 | OK | 请求成功。一般用于GET与POST请求 |
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 |
303 | See Other | 查看其它地址。与301类似。使用GET和POST请求查看 |
304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 |
305 | Use Proxy | 使用代理。所请求的资源必须通过代理访问 |
306 | Unused | 已经被废弃的HTTP状态码 |
307 | Temporary Redirect | 临时重定向。与302类似。使用GET请求重定向 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
401 | Unauthorized | 请求要求用户的身份认证 |
402 | Payment Required | 保留,将来使用 |
403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面 |
405 | Method Not Allowed | 客户端请求中的方法被禁止 |
406 | Not Acceptable | 服务器无法根据客户端请求的内容特性完成请求 |
407 | Proxy Authentication Required | 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权 |
408 | Request Time-out | 服务器等待客户端发送的请求时间过长,超时 |
409 | Conflict | 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突 |
410 | Gone | 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置 |
411 | Length Required | 服务器无法处理客户端发送的不带Content-Length的请求信息 |
412 | Precondition Failed | 客户端请求信息的先决条件错误 |
413 | Request Entity Too Large | 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息 |
414 | Request-URI Too Large | 请求的URI过长(URI通常为网址),服务器无法处理 |
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协议的版本,无法完成处理 |
记忆HTTP状态码是有一些困难的,因为状态码很多且很难记忆。Tomomi Imura利用她巧妙的构思,PS了一系列的HTTP状态信息。在你看过这些图片之后,你绝对可以记住一些 HTTP 状态码。
PS:你可以在Flickr 看到全部到图片。
以下列出这些状态码以及它们最基本的含义
100 继续
表示服务器已经接收到了请求头,并且客户端应该继续发送请求体。
101 切换协议
表示请求方已经要求服务器切换协议,并且服务器已经接受并会进行处理。
200 正常
HTTP 请求成功的标准应答。实际的应答内容由请求使用的方法来决定。
201 已创建
请求已经被接受,并且请求所对应的资源已经被创建。
202 接受
请求已被接受,尚未完成处理,也有可能会被拒绝。
204 无内容
在成功处理请求后服务器并没有返回任何实体内容。
207 多重状态
依照子请求的数量的不同,消息体包含不同的响应代码。
300 多重选择
表示被请求的资源可以提供多种选项让客户端进行选择
301 永久移除
该请求应当被定向到给定的URI(统一资源定位符)
302 找到
这是一个工业实践和标准相互矛盾的例子。一些Web应用和框架会使用302状态码
303 参见其他信息
对应当前请求的响应可以使用GET方法从另一个URI获取
304 未修改
表示资源自上次请求以来没有被改变。
305 使用代理
(译注:被请求的资源必须通过指定的代理才能被访问) 大多数HTTP客户端不会正确响应这个状态码,主要是出于安全性的原因
307 临时重定向
在这种情况下,请求会从另外的URI响应但是未来的请求仍会使用原始的URI
400 错误请求
因为错误的语法,请求不能完成
401 未授权
当需要授权,但授权失败或还没有授权时返回的状态码
402 需要支付
该状态码是为了将来可能的需求而预留的。这个代码通常不使用,但是其最初的意图是可以被某种电子货币所使用。
403 禁止
请求有效,但是服务器拒绝响应它。
404 没有找到
请求的资源不能找到,但是将来也许可用。
405 方法不允许
请求某资源时使用的请求方法不能被该资源所支持。
406 无法访问
被请求资源能够产生的内容不满足请求头中指定的类型。
408 请求超时
服务器等待请求超时
409 冲突
因为请求中存在冲突导致请求无法被处理
410 已删除
被请求的资源已不可用,同时后续也不再可用。
411 需要数据长度
请求所对应的资源需要指明长度,但请求中并没有包含长度。
413 请求实体过大
其请求数据实体过大,超过服务器处理能力。
414 请求URI过长
URI过长,服务器不能处理
416 请求范围不符合要求
客户端请求部分文件,但是服务器并不能提供这个范围值。
417 期望失败
服务器不能满足请求头重指定的要求。
418 我是茶壶
在实际HTTP服务器中不会实现该状态码
422 不可处理的请求实体
请求格式正确但是因为存在语意错误无法响应。
423 上锁
当前资源被上锁
424 错误依赖关系
因为之前的请求失败而导致了本次请求失败
425 乱序集合
在WebDav Advanced Collections 草案中定义
426 需要更新
客户端应该切换到不同的协议
429 请求过多
用户在指定时间内发送的请求过多。
431 请求头过大
因为请求中的单个域过大、或者全部域全加起来过大。
444 没有响应
在Nginx记录中使用,表示服务器没有向客户端返回信息并且已经关闭了连接
450 被Windows家长控制屏蔽
微软所扩展的一个状态码
500 服务器内部错误
当没有其他更加确切的信息可以给出时,给出的一个一般性错误信息。
502 错误网关
作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
503 服务不可用
服务器当前不可用。
506 变元协商
请求的透明内容协商导致循环引用
507 储存空间不足
服务器无法存储完成请求所必须的内容。
508 检测到循环
服务器在处理请求时发现一个无限循环
509 超过带宽限制
尽管很多服务器使用该协议,但其并没有在任何RFC中说明
599 网络连接超时错误
这个状态码没有在任何RFC中说明,但微软公司在用。