HTTP状态码对照

HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等规范扩展。所有状态码的第一个数字代表了响应的五种状态之一。所示的消息短语是典型的,但是可以提供任何可读取的替代方案。 除非另有说明,状态码是HTTP / 1.1标准(RFC 7231)的一部分。

——维基百科

1. 1xx消息

状态码 名称 说明
100 Continue 客户端应当继续发送请求
101 Switching Protocols 切换协议,服务器根据客户端的请求切换协议
102 Processing 服务器已收到并正在处理该请求,但没有响应可用
103 Early Hints 用于在输出最终HTTP消息之前返回一些响应头

2. 2xx成功

状态码 名称 说明
200 OK 请求已成功,请求所希望的响应头或数据体将随此响应返回
201 Created 请求已成功,并因此创建了一个新的资源
202 Accepted 请求已经接收到,但还未响应,没有结果
203 Non-Authoritative Information 服务器是一个转换代理服务器,以200 OK状态码为起源,但回应了原始响应的修改版本
204 No Content 服务器成功处理了请求,没有返回任何内容
205 Reset Content 服务器成功处理了请求,且没有返回任何内容。但是与204响应不同,返回此状态码的响应要求请求者重置文档视图
206 Partial Content 服务器已经成功处理了部分GET请求
207 Multi-Status 代表之后的消息体将是一个XML消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码
208 Already Reported 在DAV里面使用: propstat响应元素以避免重复枚举多个绑定的内部成员到同一个集合
226 IM Used 服务器已经完成了对资源的 GET 请求,并且响应是对当前实例应用的一个或多个实例操作结果的表示

3. 3xx重定向

状态码 名称 说明
300 Multiple Choices 被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向
301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一
302 Found 要求客户端执行临时重定向(原始描述短语为“Moved Temporarily”)。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求
303 See Other 对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源
304 Not Modified 表示资源在由请求头中的If-Modified-Since或If-None-Match参数指定的这一版本之后,未曾被修改
305 Use Proxy 被请求的资源必须通过指定的代理才能被访问
306 Switch Proxy 在最新版的规范中,306状态码已经不再被使用。最初是指“后续请求应使用指定的代理”
307 Temporary Redirect 在这种情况下,请求应该与另一个URI重复,但后续的请求应仍使用原始的URI。与302相反,当重新发出原始请求时,不允许更改请求方法
308 Permanent Redirect 请求和所有将来的请求应该使用另一个URI重复。307和308重复302和301的行为,但不允许HTTP方法更改

4. 4xx客户端错误

状态码 名称 说明
400 Bad Request 由于明显的客户端错误(格式错误的请求语法,太大的大小,无效的请求消息或欺骗性路由请求),服务器不能或不会处理该请求。
401 Unauthorized 类似于403 Forbidden,401语义即“未认证”,即用户没有必要的凭据
402 Payment Required 此响应码保留以便将来使用,创造此响应码的最初目的是用于数字支付系统,然而现在并未使用
403 Forbidden 服务器已经理解请求,但是拒绝执行它
404 Not Found 请求失败,请求所希望得到的资源未在服务器上发现,但允许用户的后续请求
405 Method Not Allowed 请求行中指定的请求方法不能被用于请求相应的资源
406 Not Acceptable 请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体,该请求不可接受
407 Proxy Authentication Required 与401响应类似,只不过客户端必须在代理服务器上进行身份验证
408 Request Timeout 请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送
409 Conflict 由于和被请求的资源的当前状态之间存在冲突,请求无法完成
410 Gone 被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。这样的状况应当被认为是永久性的
411 Length Required 服务器拒绝在没有定义Content-Length头的情况下接受请求
412 Precondition Failed 服务器在验证请求的头字段中给出先决条件时,没能满足其中的一个或多个
413 Request Entity Too Large 服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围
414 Request-URI Too Long 请求的URI长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务
415 Unsupported Media Type 对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝
416 Requested Range Not Satisfiable 如果请求中包含了 Range 请求头,并且 Range 中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义 If-Range 请求头,那么服务器就应当返回416状态码
417 Expectation Failed 响应代码意味着服务器无法满足Expect请求标头字段指示的期望值
418 I'm a teapot 本操作码是在1998年作为IETF的传统愚人节笑话, 在RFC 2324超文本咖啡壶控制协议中定义的,并不需要在真实的HTTP服务器中定义
421 Misdirected Request 该请求针对的是无法产生响应的服务器(例如因为连接重用)
422 Unprocessable Entity 请求格式正确,但是由于含有语义错误,无法响应
423 Locked 正在访问的资源被锁定
424 Failed Dependency 由于之前的某个请求发生的错误,导致当前请求失败,例如PROPPATCH
425 Too Early 服务器拒绝处理在Early Data中的请求,以规避可能的重放攻击
426 Upgrade Required 客户端应切换到Upgrade头字段中给出的不同协议,如TLS/1.0
428 Precondition Required 原始服务器要求该请求是有条件的。旨在防止“丢失更新”问题,即客户端获取资源状态,修改该状态并将其返回服务器,同时第三方修改服务器上的状态,从而导致冲突
429 Too Many Requests 用户在给定的时间内发送了太多的请求。旨在用于网络限速
431 Request Header Fields Too Large 服务器不愿处理请求,因为一个或多个头字段过大
451 Unavailable For Legal Reasons 该访问因法律的要求而被拒绝,由IETF在2015核准后新增加

5. 5xx服务器错误

状态码 名称 说明
500 Internal Server Error 通用错误消息,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理
501 Not Implemented 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
503 Service Unavailable 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是暂时的,并且将在一段时间以后恢复
504 Gateway Timeout 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应
505 HTTP Version Not Supported 服务器不支持,或者拒绝支持在请求中使用的HTTP版本
506 Variant Also Negotiates 服务器有一个内部配置错误:对请求的透明内容协商导致循环引用
507 Insufficient Storage 服务器无法存储完成请求所必须的内容。这个状况被认为是临时的
508 Loop Detected 服务器在处理请求时陷入死循环
510 Not Extended 客户端需要对请求进一步扩展,服务器才能实现它。服务器会回复客户端发出扩展请求所需的所有信息
511 Network Authentication Required 客户端需要进行身份验证才能获得网络访问权限,旨在限制用户群访问特定网络

6. 非标准状态码

状态码 名称 说明
103 Checkpoint 在可恢复请求建议中使用,以恢复中止的PUT或POST请求
218 This is fine 在ProxyErrorOverride启用时,用作允许响应主体流经Apache的所有错误的情况
419 Page Expired 由Laravel框架使用,指示CSRF令牌丢失或过期
420 Method Failure 由Spring框架在方法失败时使用,已废弃
420 Enhance Your Calm Twitter Search与Trends API在客户端被限速的情况下返回
430 Request Header Fields Too Large 由Shopify使用,当在特定时间范围内请求太多URL时替换429 Too Many Requests响应码
444 No Response Nginx上HTTP服务器扩展。服务器不向客户端返回任何信息,并关闭连接(有助于阻止恶意软件)
440 Login Time-out 客户端的会话已过期,必须再次登录
449 Retry With 服务器无法满足该请求,因为用户未提供所需的信息
450 Blocked by Windows Parental Controls 这是一个由Windows家庭控制HTTP阻止的450状态代码的示例,用于信息和测试
451 Redirect 由Exchange ActiveSync使用,指示有更高效的服务器可用或服务器无法访问用户邮箱
494 Request Header Too Large 在错误代码431提出之前Nginx上使用的扩展HTTP代码
495 SSL Certificate Error 由Nginx作为400 Bad Request响应码的扩展使用,指示客户端提供了无效的客户端证书
496 SSL Certificate Required 由Nginx作为400 Bad Request响应码的扩展使用,指示需要但未提供客户端证书
497 HTTP Request Sent to HTTPS Port 由Nginx作为400 Bad Request响应码的扩展使用,指示客户端向侦听HTTPS请求的端口发出HTTP请求
498 Invalid Token 由ArcGIS for Server返回。代码498指示令牌(Token)已过期或无效
499 Client Closed Request 由Nginx使用,指示客户端在服务器可以发送响应之前关闭了请求
499 Token Required 由ArcGIS for Server返回。代码499指示必需的令牌(Token)未提交
509 Bandwidth Limit Exceeded 服务器已超出管理员指定的带宽;共享主机提供商经常用来限制客户的带宽
520 Web Server Returned an Unknown Error 由Cloudflare用来表示原始服务器返回了一个空的,未知的或无法解释的响应
521 Web Server Is Down 由Cloudflare用来表示原始服务器已拒绝连接
522 Connection Timed Out 由Cloudflare用来表示无法与原始服务器协商TCP握手
523 Origin Is Unreachable 由Cloudflare用来表示无法到达原始服务器;如原始服务器的DNS记录不正确
524 A Timeout Occurred 由Cloudflare用来表示能够完成到原始服务器的TCP连接,但是没有及时收到HTTP响应
525 SSL Handshake Failed 由Cloudflare用来表示无法与原始服务器协商SSL/TLS握手
526 Invalid SSL Certificate 由Cloudflare和Cloud Foundry的gorouter用来表示无法验证原始服务器提供的SSL/TLS证书
529 Invalid SSL Certificate 由Qualys在SSLLabs服务器测试API中用来表示站点无法处理请求
530 Site is frozen 由Pantheon Web平台用来指示由于不活动而被冻结的站点
598 Network read timeout error 一些HTTP代理用来将代理后的网络读取超时发送给代理前的客户端