目录
前言
每个HTTP响应都带有一个状态码,明确的状态码包含了请求如何处理的信息。
HTTP状态代码是HTTP响应的第一行,它从服务器发送到客户端。
正文
如果你想知道状态码代表什么意思,那么这篇文章将会对你有很大帮助。
状态码通过3位数字表示,加上简短的描述。
数字的第一个数字表示响应类型。
包含五个响应类型:
- 1xx:信息响应——指示请求已被接收和理解。
- 2xx:成功响应——指示客户请求的操作已被接收、理解和接受。
- 3xx:重定向——指示客户端必须采取附加操作来完成请求。
- 4xx:客户端错误——表明有一个错误,这似乎是由客户端造成的。
- 5xx:服务器错误——指示服务器上发生了错误。
在文章的剩下部分,我列出了所有有用的状态码。
(俺删除了一些特定于技术的组件,如WebDAV组件和很少使用的组件)
信息响应
- 100 Continue 服务器已接收到请求头,客户端应继续发送请求体(在需要发送请求体的情况下;例如,POST请求)。在请求因不适当的头而被拒绝后,将大型请求体发送到服务器将是低效的。要让服务器检查请求的头,客户端必须在其初始请求中发送Expect: 100- Continue作为头,并在发送主体之前接收响应中的100 Continue状态代码。如果客户端收到一个错误代码,比如403(禁止)或405(方法不允许),那么它就不应该发送请求体。响应417期望失败表明请求应该在不使用Expect头的情况下重复,因为它表明服务器不支持期望(例如,HTTP/1.0服务器就是这种情况)。
- 101 Switching Protocols 客户端要求服务器切换协议,服务器已经同意这样做。 RFC 7231#6.2.2
成功响应
- 200 OK 这是成功的HTTP请求的标准响应。
- 201 Created 通常是对POST请求的响应。请求已经完成,并且创建了一个新的资源。
- 202 Accepted 该请求已被接受处理。没有提到实际的处理和结果,这可能发生在单独的服务器或批处理上。
- 203 Non-Authoritative Information 原始服务器返回200,客户机和服务器之间的转换代理更改了负载。
- 204 No Content 服务器成功地处理了请求,但不返回任何内容。
- 205 Reset Content 服务器成功地处理了请求,但不返回任何内容。类似于204响应,但是服务器要求客户端重置文档视图(例如,用于清除表单)
- 206 Partial Content 为了响应来自客户机的范围请求,服务器发送部分内容响应。 RFC 7233#4.1
重定向
- 301 Moved Permanently 这个请求和所有将来的请求都应该定向到给定的URI。仅用于GET/HEAD请求,308个永久重定向用于所有其他方法。
- 302 Found 资源被临时移动到由Location头指定的URL。仅用于GET/HEAD请求,其他方法的临时重定向为307。
- 303 See Other 在POST或PUT请求之后,指向Location头中的确认消息,可以使用新的GET请求进行访问。
- 304 Not Modified 当客户端使用请求头If-Modified-Since或If-None-Match时,此响应状态代码表示资源没有被修改。
- 307 Temporary Redirect 类似于302请求,只是它不允许更改HTTP方法。
- 308 Permanent Redirect 类似于301请求,只是它不允许更改HTTP方法。
客户端错误
- 400 Bad Request 由于在客户机上生成的请求错误,服务器无法处理请求。错误可能包括格式不正确的请求、无法处理的大小或其他。
- 401 Unauthorized 当需要身份验证且客户端未经授权时发送。
- 403 Forbidden 由于各种原因,该资源不可用。如果原因是身份验证,请选择401未授权状态代码。
- 404 Not Found 找不到所请求的资源。
- 405 Method Not Allowed 该资源不能通过该HTTP方法使用,但可能与另一个方法一起使用。
- 406 Not Acceptable 客户端传递了一个包含与服务器不兼容的值的Accept标头。
- 407 Proxy Authentication Required 在客户端和服务器之间有一个需要身份验证的代理。
- 408 Request Timeout 服务器超时等待请求。
- 409 Conflict 指示由于资源当前状态的冲突(例如多个同步更新之间的编辑冲突)而无法处理请求。
- 410 Gone 该资源不再可用,并且将不再可用。例如,比404更强大的搜索引擎将其解释为从索引中删除该资源的指示。
- 411 Length Required 客户端需要向请求添加一个内容长度的头,这是必需的。
- 412 Precondition Failed 如果客户端发送一个if-unmodified-since或if-none-match请求头,并且服务器不能满足该条件,则返回。
- 413 Payload Too Large 请求的大小超出了服务器愿意或能够处理的范围。
- 414 URI Too Long 提供的URI太长,服务器无法处理。
- 415 Unsupported Media Type 请求实体具有服务器或资源不支持的媒体类型。
- 416 Range Not Satisfiable 客户端使用范围头请求文件的一部分,但服务器不能提供该部分。
- 417 Expectation Failed 服务器无法满足Expect请求头的要求。
- 421 Misdirected Request 请求被定向到无法产生响应的服务器(例如,由于连接重用)。
- 426 Upgrade Required 客户端应该切换到不同的协议,比如在Upgrade头字段中指定的TLS/1.0。
- 428 Precondition Required 服务器要求请求包含一个If-Match头。
- 429 Too Many Requests 用户在给定的时间内发送了太多的请求。用于速率限制。
- 431 Request Header Fields Too Large 由于一个或多个标头或整个标头集太大,无法满足请求。
- 451 Unavailable For Legal Reasons 由于法律原因,资源不可用.
服务器错误
- 500 Internal Server Error 一个通用的服务器错误消息,当遇到意外情况时给出,没有更具体的消息是合适的。
- 501 Not Implemented 服务器要么不识别请求方法,要么缺乏满足请求的能力。
- 502 Bad Gateway 服务器充当网关或代理,从上游服务器接收到无效响应。
- 503 Service Unavailable 服务器当前暂时不可用(因为它超载或停机进行维护)。
- 504 Gateway Timeout 服务器充当网关或代理,没有从上游服务器收到及时响应。
- 505 HTTP Version Not Supported 服务器不支持请求中指定的HTTP协议版本。