HTTP状态代码就像来自Web服务器的简短注释,它被添加到网页的顶部。它实际上不是网页的一部分。相反,它是来自服务器的消息,让您知道服务器收到查看页面请求后的情况。

每次浏览器与服务器交互时都会返回这些类型的消息,即使您没有经常看到它们。如果您是网站所有者或开发人员,了解HTTP状态代码至关重要。HTTP状态代码是诊断和修复网站配置错误的重要工具。

本文介绍了最常见的服务器状态和错误代码,并说明它们所代表的意义。

他们来自哪里?他们去哪里?

每次单击链接或键入URL并按“Enter”键,浏览器都会向Web服务器发送请求。Web服务器接收并处理请求,然后将请求的资源与HTTP标头一起发回。

HTTP状态代码将在HTTP标头中传递到您的浏览器。虽然每次浏览器请求网页或资源时都会返回状态代码,但大多数情况下您都没有看到它们。当出现问题时,您可能会在浏览器中看到HTTP状态代码。这是服务器的反馈信息,告诉你:“有些东西不对。这是一个解析出错的代码。“

Google 404 HTTP状态代码

如果您想查看浏览器通常不会显示的状态代码,可以使用许多不同的工具来查看。浏览器扩展适用于开发人员友好的浏览器,如Chrome和Firefox,还有许多基于Web的标题提取工具,如Web Sniffer。

要使用这些工具查看HTTP状态代码,请查看报告顶部附近出现的行“Status:HTTP / 1.1”,后跟服务器返回的状态代码。

HTTP状态代码

HTTP状态代码列表分为5个类:

  • 100’s:信息代码,表示浏览器发起的请求正在继续。
  • 200’s:服务器成功接收,理解和处理浏览器请求时返回的成功代码。
  • 300’s:当新资源替换所请求的资源时返回重定向代码。
  • 400’s:客户端错误代码,表示请求存在问题。
  • 500:服务器错误代码,表示请求已被接受,但服务器上的错误阻止了请求的完成。

在每个类中,存在各种服务器代码,并且可以由服务器返回。每个单独的代码都具有特定且独特的含义。

信息响应

错误码标识说明
100Continue继续,客户端应该继续请求,如果已经完成,则忽略它。
101Switching Protocols服务端正进行协议切换。
102Processing (WebDAV)服务端已收到请求,但无响应可用。
103Early Hints允许在服务准备响应时进行预加载

信息响应

错误码标识说明
200OK请求已成功。通常为客户端请求后的响应。
“一切都好。”这是当网页或资源完全符合预期时所传递的代码。
201Created请求已成功,并因此创建了一个新的资源。
202Accepted服务器已接受请求,但尚未处理。最终该请求可能会也可能不会被执行,并且可能在处理发生时被禁止。
203Non-Authoritative Information服务器是一个转换代理服务器(transforming proxy,例如网络加速器),以200 OK状态码为起源,但回应了原始响应的修改版本。
204No Content服务器成功处理了请求,没有返回任何内容。在强制门户功能中,Wifi设备连接到需要进行Web认证的Wifi接入点时,通过访问一个能生成HTTP 204响应的的网站,如果能正常收到204响应,则代表无需Web认证,否则会弹出网页浏览器界面,显示出Web网页认证界面用于让用户认证登录。
205Reset Content服务器成功处理了请求,但没有返回任何内容。与204响应不同,此响应要求请求者重置文档视图。
206Partial Content服务器已经成功处理了部分GET请求。类似于FlashGet或者迅雷这类的HTTP下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。
207Multi-Status (WebDAV)代表之后的消息体将是一个XML消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码。
208Already Reported (WebDAV)DAV绑定的成员已经在(多状态)响应之前的部分被列举,且未被再次包含。
226IM Used服务器已经满足了对资源的请求,对实体请求的一个或多个实体操作的结果表示。

重定向

错误码标识说明
300Multiple Choices被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向。除非这是一个HEAD请求,否则该响应应当包括一个资源特性及地址的列表的实体,以便用户或浏览器从中选择最合适的重定向地址。
301Moved Permanently被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。
302Found请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。
303See Other对应当前请求的响应可以在另一个URI上被找到,而且客户端应当采用GET的方式访问那个资源。
304Not Modified表示资源在由请求头中的If-Modified-Since或If-None-Match参数指定的这一版本之后,未曾被修改。在这种情况下,由于客户端仍然具有以前下载的副本,因此不需要重新传输资源。
305Use Proxy被请求的资源必须通过指定的代理才能被访问。Location域中将给出指定的代理所在的URI信息,接收者需要重复发送一个单独的请求,通过这个代理才能访问相应资源。只有原始服务器才能创建305响应。
306Switch Proxy在最新版的规范中,306状态码已经不再被使用。
307Temporary Redirect请求的资源现在临时从不同的URI响应请求。
308Permanent Redirect请求和所有将来的请求应该使用另一个URI重复。

客户端响应

错误码标识说明
400Bad Request错误请求。
401Unauthorized未进行身份认证。
“未授权。” 当目标资源缺少有效的身份验证凭据时,服务器返回此信息。
402Payment Required保留状态码。
403Forbidden服务器拒绝执行当前请求。
“禁止访问该资源。”当用户尝试访问他们无权访问的内容时,将返回此代码。例如,尝试在不登录的情况下查看受密码保护的内容可能会产生403错误。
404Not Found请求失败,未发现当前请求的资源。
405Method Not Allowed请求行中指定的请求方法不能被用于请求相应的资源。该响应必须返回一个Allow头信息用以表示出当前资源能够接受的请求方法的列表。例如,需要通过POST呈现数据的表单上的GET请求,或只读资源上的PUT请求。鉴于PUT,DELETE方法会对服务器上的资源进行写操作,因而绝大部分的网页服务器都不支持或者在默认配置下不允许上述请求方法,对于此类请求均会返回405错误。
406Not Acceptable请求的资源的内容特性无法满足请求头中的条件,因此无法响应。
407Proxy Authentication Required与401响应类似,只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个Proxy-Authenticate用以进行身份询问。客户端可以返回一个Proxy-Authorization信息头用以验证。
408Request Timeout请求超时。根据HTTP规范,客户端没有在服务器预备等待的时间内完成一个请求的发送,客户端可以随时再次提交这一请求而无需进行任何更改。
409Conflict表示因为请求存在冲突无法处理该请求,例如多个同步更新之间的编辑冲突。
410Gone表示所请求的资源不再可用,将不再可用。在收到410状态码后,用户应停止再次请求资源。类似于404“未找到”代码,除了410表示条件是预期的并且是永久的。
411Length Required服务器拒绝在没有定义Content-Length头的情况下接受请求。在添加了表明请求消息体长度的有效Content-Length头之后,客户端可以再次提交该请求。
412Precondition Failed服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其希望的内容以外的资源上。
413Request Entity Too Large服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。如果这个状况是临时的,服务器应当返回一个Retry-After的响应头,以告知客户端可以在多少时间以后重新尝试。
414Request-URI Too Long请求的URI长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。
415Unsupported Media Type对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。
416Requested Range Not Satisfiable如果请求中包含了Range请求头,并且Range中指定的任何数据范围都与当前资源的可用范围不重合。
417Expectation Failed此响应代码意味着服务器无法满足Expect请求标头字段指示的期望值。
418I'm a teapot“茶壶冲泡咖啡”彩蛋 - 超文本咖啡壶控制协议。
htcpcp1.0协议中的418的意义是:当客户端给一个茶壶发送泡咖啡的请求时,茶壶就返回一个418错误状态码,表示“我是一个茶壶”。
421Misdirected Request该请求针对的是无法产生响应的服务器。
422Unprocessable Entity (WebDAV)请求格式正确,但是由于含有语义错误,无法响应。
423Locked (WebDAV)当前资源被锁定。
424Failed Dependency (WebDAV)由于之前的某个请求发生的错误,导致当前请求失败。
425Too Early服务器不愿意冒着风险去处理可能重播的请求。
426Upgrade Required服务器拒绝使用当前协议执行请求,但可能在客户机升级到其他协议后愿意这样做。
428Precondition Required原始服务器要求该请求是有条件的。用于防止“丢失更新”问题,即客户端获取资源状态,修改该状态并将其返回服务器,同时第三方修改服务器上的状态,从而导致冲突。
429Too Many Requests用户在给定的时间内发送了太多的请求。旨在用于网络限速。
 当用户在给定时间内发送了太多请求(速率限制)时由服务器生成。这有时可能来自尝试访问您网站的bots或脚本。
431Request Header Fields Too Large服务器不愿处理请求,因为一个或多个头字段过大。
451Unavailable For Legal Reasons用户请求非法资源。

服务端响应

错误码标识说明
500Internal Server Error通用错误信息。
501Not Implemented服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503Service Unavailable服务器没有准备好处理请求。常见原因是服务器因维护或重载而停机。
504Gateway Timeout当服务器作为网关,不能及时得到响应时返回此错误代码。
505HTTP Version Not Supported服务器不支持请求中所使用的HTTP协议版本。
506Variant Also Negotiates服务器存在内部配置错误,被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。
507Insufficient Storage (WebDAV)服务器内部错误。这个状况被认为是临时的。
508Loop Detected (WebDAV)服务器在处理请求时陷入死循环。
510Not Extended获取资源所需要的策略并没有被满足。客户端需要进一步请求。
511Network Authentication Required需要进行身份认证后才可获取网络访问权限。

HTTP各类状态码说明,数据来自网络。

最后更新于 2024-03-09