Apache状态码整理

来源:互联网 发布:ipad淘宝hd5.0.1版本 编辑:程序博客网 时间:2024/06/05 20:19

http协议状态码分类

status(状态码):
1xx: 100-101 信息提示
2xx: 200-206 成功
3xx: 300-305 重定向
4xx: 400-415 错误类信息,客户端错误
5xx: 500-505 错误类信息,服务器端错误

状态码详解

100 Continue 信息型状态响应码表示目前为止一切正常, 客户端应该继续请求, 如果已完成请求则忽略.


200 OK 表明请求已经成功. 默认情况下成功的请求将会被缓存

201 Created 是一个代表成功的应答状态码,表示请求已经被成功处理,并且创建了新的资源,这个状态码的常规使用场景是作为 PUT 请求的返回值

202 Accepted 表示服务器端已经收到请求消息,但是尚未进行处理。但是对于请求的处理确实无保证的,即稍后无法通过 HTTP 协议给客户端发送一个异步请求来告知其请求的处理结果。这个状态码被设计用来将请求交由另外一个进程或者服务器来进行处理,或者是对请求进行批处理的情形

203 Non-Authoritative Information 表示请求已经成功被响应,但是获得的负载与源头服务器的状态码为 200 (OK)的响应相比,经过了拥有转换功能的 proxy (代理服务器)的修改。203 状态码有点类似于 Warning 首部的 214(Transformation Applied)警告码,后者的优势在于可以应用于任何状态码的响应之中

204 No Content 成功状态响应码表示目前请求成功,但客户端不需要更新其现有页面。204 响应默认是可以被缓存的。在响应中需要包含头信息 ETag。使用惯例是,在 PUT 请求中进行资源更新,但是不需要改变当前展示给用户的页面,那么返回 204 No Content。如果新创建了资源,那么返回 201 Created 。如果页面需要更新以反映更新后的资源,那么需要返回 200

205 Reset Content 用来通知客户端重置文档视图,比如清空表单内容、重置 canvas 状态或者刷新用户界面。

206 Partial Content 成功状态响应代码表示请求已成功,并且主体包含所请求的数据区间,该数据区间是在请求的 Range 首部指定的。如果只包含一个数据区间,那么整个响应的 Content-Type 首部的值为所请求的文件的类型,同时包含 Content-Range 首部。如果包含多个数据区间,那么整个响应的 Content-Type 首部的值为 multipart/byteranges ,其中一个片段对应一个数据区间,并提供 Content-Range 和 Content-Type 描述信息。


300 Multiple Choices 是一个用来表示重定向的响应状态码,表示该请求拥有多种可能的响应。用户代理或者用户自身应该从中选择一个。由于没有如何进行选择的标准方法,这个状态码极少使用。假如服务器可以提供一个优先选择,那么它应该生成一个 Location 首部。

301 Moved Permanently 永久重定向 说明请求的资源已经被移动到了由 Location 头部指定的url上,是固定的不会再改变。搜索引擎会根据该响应修正。尽管标准要求浏览器在收到该响应并进行重定向时不应该修改http method和body,但是有一些浏览器可能会有问题。所以最好是在应对GET 或 HEAD 方法时使用301,其他情况使用308 来替代301

302 Found 重定向状态码表明请求的资源被暂时的移动到了由Location 头部指定的 URL 上。浏览器会重定向到这个URL, 但是搜索引擎不会对该资源的链接进行更新

303 See Other 重定向状态码,通常作为 PUT 或 POST 操作的返回结果,它表示重定向链接指向的不是新上传的资源,而是另外一个页面,比如消息确认页面或上传进度页面

304 Not Modified 未改变说明无需再次传输请求的内容,也就是说可以使用缓存的内容

307 Temporary Redirect(临时重定向)是表示重定向的响应状态码,说明请求的资源暂时地被移动到 Location 首部所指向的 URL 上

状态码 307 与 302 之间的唯一区别在于,当发送重定向请求的时候,307 状态码可以确保请求方法和消息主体不会发生变化。当响应状态码为 302 的时候,一些旧有的用户代理会错误地将请求方法转换为 GET:使用非 GET 请求方法而返回 302 状态码,Web 应用的运行状况是不可预测的;而返回 307 状态码时则是可预测的。对于 GET 请求来说,两种情况没有区别

308 Permanent Redirect(永久重定向)是表示重定向的响应状态码,说明请求的资源已经被永久的移动到了由 Location 首部指定的 URL 上。浏览器会进行重定向,同时搜索引擎也会更新其链接(用 SEO 的行话来说,意思是链接汁被传递到了新的 URL)。

在重定向过程中,请求方法和消息主体不会发生改变,然而在返回 301 状态码的情况下,请求方法有时候会被客户端错误地修改为 GET 方法。


400 Bad Request 响应状态码表示由于语法无效,服务器无法理解该请求。 客户端不应该在未经修改的情况下重复此请求

401 Unauthorized 代表客户端错误,指的是由于缺乏目标资源要求的身份验证凭证,发送的请求未得到满足。这个状态码会与 WWW-Authenticate 首部一起发送,其中包含有如何进行验证的信息

403 Forbidden 代表客户端错误,指的是服务器端有能力处理该请求,但是拒绝授权访问

404 Not Found 代表客户端错误,指的是服务器端无法找到所请求的资源。由于它的频繁出现,这个状态码估计是最著名的一个了。返回该响应的链接通常称为坏链(broken link)或死链(dead link),它们会导向链接出错处理页面

405 Method Not Allowed 表明服务器禁止了使用当前 HTTP 方法的请求。需要注意的是,GET 与 HEAD 两个方法不得被禁止,当然也不得返回状态码 405

406 Not Acceptable 状态码表示客户端错误,指代服务器端无法提供与 Accept-Charset 以及 Accept-Language 消息头指定的值相匹配的响应

407 Proxy Authentication Required 代表客户端错误,指的是由于缺乏位于浏览器与可以访问所请求资源的服务器之间的代理服务器(proxy server )要求的身份验证凭证,发送的请求尚未得到满足

408 Request Timeout r表示服务器想要将没有在使用的连接关闭。一些服务器会在空闲连接上发送此信息,即便是在客户端没有发送任何请求的情况下。服务器应该在此类响应中将 Connection 首部的值设置为 “close”,因为 408 意味着服务器已经决定将连接关闭,而不是继续等待

409 Conflict 表示请求与当前服务器端的状态相冲突。

冲突最有可能发生在对 PUT 请求的响应中。例如,当上传文件的版本比服务器上已存在的要旧,从而导致版本冲突的时候,那么就有可能收到状态码为 409 的响应

410 丢失 说明请求的内容在服务器上不存在了,同时是永久性的丢失。如果不清楚是否为永久或临时的丢失,应该使用404

411 Length Required 属于客户端错误,表示由于缺少确定的Content-Length 首部字段,服务器拒绝客户端的请求

412 Precondition Failed(先决条件失败)表示客户端错误,意味着对于目标资源的访问请求被拒绝,这时候,请求的操作——通常是上传或修改文件——无法执行,从而返回该错误状态码

413 Payload Too Large 表示请求主体的大小超过了服务器规定的限度,服务器可以选择关闭连接或者返回 Retry-After 首部字段

414 URI Too Long 表示客户端所请求的 URI 超过了服务器允许的范围

以下是造成这种罕见情况的几种可能的原因:
1、当客户端误将 POST 请求当作 GET 请求的时候,会带有一个常常的查询字符串(query);
2、when the client has descended into a loop of redirection (for example, a redirected URI prefix that points to a suffix of itself)
3、当客户端对服务器进行攻击,试图寻找潜在的漏洞的时候

415 Unsupported Media Type 是一种HTTP协议的错误状态代码,表示服务器由于不支持其有效载荷的格式,从而拒绝接受客户端的请求

416 Range Not Satisfiable 错误状态码意味着服务器无法处理所请求的数据区间。最常见的情况是所请求的数据区间不在文件范围之内,也就是说,Range 首部的值,虽然从语法上来说是没问题的,但是从语义上来说却没有意义

417 Expectation Failed 状态码表示客户端错误,意味着服务器无法满足 Expect 请求消息头中的期望条件

426 Upgrade Required 是一种HTTP协议的错误状态代码,表示服务器拒绝处理客户端使用当前协议发送的请求,但是可以接受其使用升级后的协议发送的请求

428 Precondition Required 表示服务器端要求发送条件请求

429 Too Many Requests 表示在一定的时间内用户发送了太多的请求,即超出了“频次限制”

431 Request Header Fields Too Large 表示由于请求中的首部字段的值过大,服务器拒绝接受客户端的请求。客户端可以在缩减首部字段的体积后再次发送请求

451 Unavailable For Legal Reasons (因法律原因不可用)是一种HTTP协议的错误状态代码,表示服务器由于法律原因,无法提供客户端请求的资源,例如可能会导致法律诉讼的页面


500 Internal Server Error 是表示服务器端错误的响应状态码,意味着所请求的服务器遇到意外的情况并阻止其执行请求。

这个错误代码是一个通用的“全方位”响应代码。通常服务器管理员对于类似于 500 这样的错误会更加详细地记录相关的请求信息来防止以后同样错误的出现。

501 Not Implemented 服务器错误响应码表示请求的方法不被服务器支持,因此无法被处理。服务器必须支持的方法(即不会返回这个状态码的方法)只有 GET 和 HEAD。

请注意,你无法修复 501 错误,需要被访问的 web 服务器去修复该问题

502 Bad Gateway 是一种HTTP协议的服务器端错误状态代码,它表示扮演网关或代理角色的服务器,从上游服务器中接收到的响应是无效的。

Gateway (网关)在计算机网络体系中可以指代不同的设备,502 错误通常不是客户端能够修复的,而是需要由途径的Web服务器或者代理服务器对其进行修复

503 Service Unavailable 是一种HTTP协议的服务器端错误状态代码,它表示服务器尚未处于可以接受请求的状态。

通常造成这种情况的原因是由于服务器停机维护或者已超载。注意在发送该响应的时候,应该同时发送一个对用户友好的页面来解释问题发生的原因

504 Gateway Timeout 是一种HTTP协议的服务器端错误状态代码,表示扮演网关或者代理的服务器无法在规定的时间内获得想要的响应

505 HTTP Version Not Supported 是一种HTTP协议的服务器端错误状态代码,表示服务器不支持请求所使用的 HTTP 版本

511 Network Authentication Required 是一种HTTP协议的错误状态代码,表示客户端需要通过验证才能使用该网络。

该状态码不是由源头服务器生成的,而是由控制网络访问的拦截代理服务器生成的。

网络运营商们有时候会在准许使用网络之前要求用户进行身份验证、接受某些条款,或者进行其他形式的与用户之间的互动(例如在网络咖啡厅或者机场)。他们通常用用户设备的 MAC 地址来进行识别