4:请求错误

这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个 HEAD 请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永久性的状况。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含在此类错误响应中的实体内容。

400(Bad Request):语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。

401(Unauthorized):客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填 写合适的Authorization头后再次发出请求。

402(Payment Required):该状态码是为了将来可能的需求而预留的。

403(Forbidden):服务器已经理解请求,但是拒绝执行它。通常由于服务器上文件或目录的权限设置导致。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。

404(Not Found):请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。

405(Method Not Allowed):请求行中指定的请求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)不能被用于请求相应的资源。该响应必须返回一个Allow头信息用以表示出当前资源能够接受的请求方法的列表。

406(Not Acceptable):指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容。

407(Proxy Authentication Required):与401响应类似,只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个 Proxy-Authenticate 用以进行身份询问。客户端可以返回一个 Proxy-Authorization 信息头用以验证。

408(Request Timeout):请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端可以随时再次提交这一请求而无需进行任何更改。

409(Conflict):由于和被请求的资源的当前状态之间存在冲突,请求无法完成。这个代码只允许用在这样的情况下才能被使用:用户被认为能够解决冲突,并且会重新提交新的请求。该响应应当包含足够的信息以便用户发现冲突的源头。冲突通常发生于对 PUT 请求的处理中。

410(Gone):被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。这样的状况应当被认为是永久性的。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置。

411(Length Required):服务器拒绝在没有定义 Content-Length 头的情况下接受请求。在添加了表明请求消息体长度的有效 Content-Length 头之后,客户端可以再次提交该请求。

412(Precondition Failed):服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其希望的内容以外的资源上。

413(Request Entity Too Large):服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。此种情况下,服务器可以关闭连接以免客户端继续发送此请求。如果这个状况是临时的,服务器应当返回一个 Retry-After 的响应头,以告知客户端可以在多少时间以后重新尝试。

414(Request-URI Too Long):请求的URI 长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。

415(Unsupported Media Type):对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。

416(Requested Range Not Satisfiable):如果请求中包含了 Range 请求头,并且 Range 中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义 If-Range 请求头,那么服务器就应当返回416状态码。

417(Expectation Failed):在请求头 Expect 中指定的预期内容无法被服务器满足,或者这个服务器是一个代理服务器,它有明显的证据证明在当前路由的下一个节点上,Expect 的内容无法被满足。

418(I’m a teapot):本操作码是在1998年作为IETF的传统愚人节笑话, 在RFC 2324 超文本咖啡壶控制协议中定义的,并不需要在真实的HTTP服务器中定义。当一个控制茶壶的HTCPCP收到BREW或POST指令要求其煮咖啡时应当回传此错误。

421(There are too many connections from your internet address):从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。

422(Unprocessable Entity):请求格式正确,但是由于含有语义错误,无法响应。

424(Failed Dependency):由于之前的某个请求发生的错误,导致当前请求失败。

426(Upgrade Required):客户端应当切换到TLS/1.0。

449(Retry With):由微软扩展,代表请求应当在执行完适当的操作后进行重试。

451(Unavailable For Legal Reasons):由IETF核准,代表基于法律因素,网站内容已遭封锁。

5:服务器错误

这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。除非这是一个HEAD 请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中被包含的实体。这些状态码适用于任何响应方法。

500(Internal Server Error):服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。

501(Not Implemented):服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求。

502(Bad Gateway):作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

503(Service Unavailable):由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中。

504(Gateway Timeout):作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。

505(HTTP Version Not Supported):服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本。这暗示着服务器不能或不愿使用与客户端相同的版本。响应中应当包含一个描述了为何版本不被支持以及服务器支持哪些协议的实体。

507(Insufficient Storage):服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。

509(Bandwidth Limit Exceeded):服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。