0%

HTTP响应代码:我是一个“茶壶”?

HTTP状态码(HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。读准了响应码,可以清楚地知道发出的请求是否成功、哪里出错(客户端、网络或服务器),继而调整自己的程序——包括极其常见的404 Not Found403 Forbidden502 Bad Gateway等。

此外,还有一些略显奇葩的状态码,如402 Payment Required418 I'm a Teapot(适用于超文本咖啡壶控制协议和 1998 年愚人节的玩笑)

1. 概述

目前公认的状态码分五类:

  • 1xx:信息响应

  • 2xx:成功响应

  • 3xx:重定向

  • 4xx:请求错误

  • 5xx:服务器错误

此外,还存在并不通用的600状态码。服务器可能会回复一个无法在下面查到的状态码,这说明这个是非标准的,但仍遵循上面五大类的定义。


2. 1xx信息响应

100 Continue

这个临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它。

101 Switching Protocols

该代码是响应客户端的Upgrade请求头发送的,指明服务器即将切换的协议。

102 Processing (WebDAV)

此代码表示服务器已收到并正在处理该请求,但当前没有响应可用。

103 Early Hints

此状态代码主要用于与Link链接头一起使用,以允许用户代理在服务器准备响应阶段时开始预加载preloading资源。


3. 2xx成功响应

200 OK

请求成功。成功的含义取决于HTTP方法:

  • GET: 资源已被提取并在消息正文中传输。

  • HEAD: 实体标头位于消息正文中。

  • PUT or POST: 描述动作结果的资源在消息体中传输。

  • TRACE: 消息正文包含服务器收到的请求消息。

201 Created

该请求已成功,并因此创建了一个新的资源。这通常是在POST请求,或是某些PUT请求之后返回的响应。

202 Accepted

请求已经接收到,但还未响应,没有结果。意味着不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求,或者批处理。

203 Non-Authoritative Information

服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。例如,包含资源的元数据可能导致原始服务器知道元信息的超集。使用此状态码不是必须的,而且只有在响应不使用此状态码便会返回200 OK的情况下才是合适的。

204 No Content

对于该请求没有的内容可发送,但头部字段可能有用。用户代理可能会用此时请求头部信息来更新原来资源的头部缓存字段。

205 Reset Content

告诉用户代理重置发送此请求的文档。

206 Partial Content

当从客户端发送Range范围标头以只请求资源的一部分时,将使用此响应代码。

207 Multi-Status (WebDAV)

对于多个状态代码都可能合适的情况,传输有关多个资源的信息。


4. 3xx重定向

300 Multiple Choice

请求拥有多个可能的响应。用户代理或者用户应当从中选择一个。(没有标准化的方法来选择其中一个响应,但是建议使用指向可能性的HTML 链接,以便用户可以选择。)

301 Moved Permanently

请求资源的URL已永久更改。在响应中给出了新的URL

302 Found

此响应代码表示所请求资源的URI已暂时更改。未来可能会对URI进行进一步的改变。因此,客户机应该在将来的请求中使用这个相同的URI

303 See Other

服务器发送此响应,以指示客户端通过一个GET请求在另一个URI中获取所请求的资源。

304 Not Modified

这是用于缓存的目的。它告诉客户端响应还没有被修改,因此客户端可以继续使用相同的缓存版本的响应。

305 Use Proxy

HTTP规范中定义,以指示请求的响应必须被代理访问。由于对代理的带内配置的安全考虑,它已被弃用。

306 unused

此响应代码不再使用;它只是保留。它曾在HTTP/1.1规范的早期版本中使用过。

307 Temporary Redirect

服务器发送此响应,以指示客户端使用在前一个请求中使用的相同方法在另一个URI上获取所请求的资源。这与302 Found``HTTP响应代码具有相同的语义,但用户代理不能更改所使用的HTTP方法:如果在第一个请求中使用了POST,则在第二个请求中必须使用POST

308 Permanent Redirect

这意味着资源现在永久位于由Location:`` HTTP Response标头指定的另一个URI。这与301 Moved Permanently``HTTP响应代码具有相同的语义,但用户代理不能更改所使用的HTTP方法:如果在第一个请求中使用POST,则必须在第二个请求中使用POST


5. 请求错误

400 Bad Request

由于被认为是客户端错误(例如,错误的请求语法、无效的请求消息帧或欺骗性的请求路由),服务器无法或不会处理请求。

401 Unauthorized

虽然 HTTP 标准指定了unauthorized,但从语义上来说,这个响应意味着unauthenticated。也就是说,客户端必须对自身进行身份验证才能获得请求的响应。

402 Payment Required

此响应代码保留供将来使用。创建此代码的最初目的是将其用于数字支付系统,但是此状态代码很少使用,并且不存在标准约定。

403 Forbidden

客户端没有访问内容的权限;也就是说,它是未经授权的,因此服务器拒绝提供请求的资源。与401 Unauthorized不同,服务器知道客户端的身份。

404 Not Found

服务器找不到请求的资源。在浏览器中,这意味着无法识别 URL。在 API 中,这也可能意味着端点有效,但资源本身不存在。服务器也可以发送此响应,而不是403 Forbidden,以向未经授权的客户端隐藏资源的存在。这个响应代码可能是最广为人知的,因为它经常出现在网络上。

405 Method Not Allowed

服务器知道请求方法,但目标资源不支持该方法。例如,API可能不允许调用DELETE来删除资源。

406 Not Acceptable

web服务器在执行服务端驱动型内容协商机制后,没有发现任何符合用户代理给定标准的内容时,就会发送此响应。

407 Proxy Authentication Required

类似于401 Unauthorized但是认证需要由代理完成。

408 Request Timeout

此响应由一些服务器在空闲连接上发送,即使客户端之前没有任何请求。这意味着服务器想关闭这个未使用的连接。由于一些浏览器,如 Chrome、Firefox 27+ 或 IE9,使用HTTP预连接机制来加速冲浪,所以这种响应被使用得更多。还要注意的是,有些服务器只是关闭了连接而没有发送此消息。

409 Conflict

当请求与服务器的当前状态冲突时,将发送此响应。

410 Gone

当请求的内容已从服务器中永久删除且没有转发地址时,将发送此响应。客户端需要删除缓存和指向资源的链接。HTTP 规范打算将此状态代码用于有限时间的促销服务。API 不应被迫指出已使用此状态代码删除的资源。

411 Length Required

服务端拒绝该请求因为Content-Length头部字段未定义但是服务端需要它。

412 Precondition Failed

客户端在其头文件中指出了服务器不满足的先决条件。

413 Payload Too Large

请求实体大于服务器定义的限制。服务器可能会关闭连接,或在标头字段后返回重试Retry-After

414 URI Too Long

客户端请求的 URI 比服务器愿意接收的长度长。

415 Unsupported Media Type

服务器不支持请求数据的媒体格式,因此服务器拒绝请求。

416 Range Not Satisfiable

无法满足请求中Range标头字段指定的范围。该范围可能超出了目标URI数据的大小。

417 Expectation Failed

此响应代码表示服务器无法满足Expect请求标头字段所指示的期望。

418 I'm a teapot

服务端拒绝用茶壶煮咖啡。笑话,典故来源茶壶冲泡咖啡。


6. 服务器错误

500 Internal Server Error

服务器遇到了不知道如何处理的情况。

501 Not Implemented

服务器不支持请求方法,因此无法处理。服务器需要支持的唯二方法(因此不能返回此代码)是GET and HEAD.

502 Bad Gateway

此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应。

503 Service Unavailable

服务器没有准备好处理请求。常见原因是服务器因维护或重载而停机。请注意,与此响应一起,应发送解释问题的用户友好页面。这个响应应该用于临时条件和如果可能的话,HTTP标头Retry-After字段应该包含恢复服务之前的估计时间。网站管理员还必须注意与此响应一起发送的与缓存相关的标头,因为这些临时条件响应通常不应被缓存。

504 Gateway Timeout

当服务器充当网关且无法及时获得响应时,会给出此错误响应。

505 HTTP Version Not Supported

服务器不支持请求中使用的HTTP版本。

506 Variant Also Negotiates

服务器存在内部配置错误:所选的变体资源被配置为参与透明内容协商本身,因此不是协商过程中的适当终点。

507 Insufficient Storage (WebDAV)

无法在资源上执行该方法,因为服务器无法存储成功完成请求所需的表示。

508 Loop Detected (WebDAV)

服务器在处理请求时检测到无限循环。

510 Not Extended

服务器需要对请求进行进一步扩展才能完成请求。

511 Network Authentication Required

指示客户端需要进行身份验证才能获得网络访问权限。


THE END感谢您的阅读~

赏作者一杯作业......