HTTP状态码是HTTP协议中用于标识服务器对客户端请求处理结果的三位数字代码。它们分为五类,每一类状态码都有其特定的含义和用途。以下是HTTP状态码的分类及其常见状态码的含义:
1xx(信息性响应)
- 100 Continue:表示服务器已接收到请求的初始部分,客户端应该继续发送请求的剩余部分,或者如果请求已完成,忽略这个响应。
- 101 Switching Protocols:表示服务器已同意客户端请求的协议切换,服务器会在响应的头部字段Upgrade中指明新的协议。
2xx(成功响应)
- 200 OK:表示请求成功,服务器返回了请求的资源或结果,这是最常见的状态码,用于表示正常的请求和响应。
- 201 Created:表示请求已成功,并且服务器创建了新的资源,服务器会在响应的头部字段Location中提供新资源的URL。
- 202 Accepted:表示请求已接受,但尚未处理,服务器通常会在响应的头部字段Location中提供处理请求的进度或状态的URL。
- 203 Non-Authoritative Information:表示返回的元数据与源服务器提供的不完全相同,而是从本地或第三方副本收集的。
- 204 No Content:表示服务器成功处理了请求,但不需要返回任何内容。
- 205 Reset Content:表示服务器成功处理了请求,但没有返回任何内容,但要求客户端重置文档视图。
- 206 Partial Content:表示服务器已成功处理了部分GET请求,常用于断点续传或下载大文件。
3xx(重定向响应)
- 300 Multiple Choices:表示请求的资源有多个可选的表示形式,服务器返回了一个列表,让客户端选择其中一个进行访问。
- 301 Moved Permanently:表示请求的资源已永久移动到另一个URL,客户端应该使用新的URL进行后续的请求。
- 302 Found:表示请求的资源暂时移动到另一个URL,客户端应该使用新的URL进行本次的请求,但不应该更新收藏夹或链接。
- 303 See Other:表示请求的资源可以在另一个URL找到,服务器返回了新的URL,客户端应该使用GET方法进行新的请求。
- 304 Not Modified:表示客户端有缓冲的文档并发出了一个条件性的请求,服务器告诉客户端,原来缓冲的文档还可以继续使用。
- 305 Use Proxy:表示请求的文档应该通过Location头所指明的代理服务器提取。
- 307 Temporary Redirect:表示请求的资源临时从不同的URI响应请求,与302类似,但新的URL应该被视为临时性的替代。
4xx(客户端错误响应)
- 400 Bad Request:表示请求有语法错误,服务器无法理解或处理,客户端应该检查请求的格式和内容。
- 401 Unauthorized:表示请求需要身份验证,服务器返回了WWW-Authenticate头部字段,指明了验证的方法和范围。
- 403 Forbidden:表示请求被服务器拒绝,服务器没有返回任何内容,客户端应该放弃请求,或者联系服务器的管理员。
- 404 Not Found:表示请求的资源不存在,服务器无法找到匹配的URL,客户端应该检查请求的URL是否正确。
- 405 Method Not Allowed:表示请求方法对指定的资源不适用。
- 406 Not Acceptable:表示指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容。
- 407 Proxy Authentication Required:表示客户必须先经过代理服务器的授权。
- 408 Request Timeout:表示在服务器许可的等待时间内,客户一直没有发出任何请求。
- 409 Conflict:通常和PUT请求有关,由于请求和资源的当前状态相冲突。
- 410 Gone:表示所请求的文档已经不再可用。
- 411 Length Required:表示服务器不能处理请求,除非客户发送一个Content-Length头。
- 412 Precondition Failed:表示请求头中指定的一些前提条件失败。
- 413 Request Entity Too Large:表示目标文档的大小超过服务器当前愿意处理的大小。
- 414 Request URI Too Long:表示URI太长。
- 415 Requested Range Not Satisfiable:表示服务器不能满足客户在请求中指定的Range头。
5xx(服务器错误响应)
- 500 Internal Server Error:表示服务器在处理请求的过程中发生了内部错误,导致无法完成请求。
- 501 Not Implemented:表示服务器不支持请求的方法或功能,或者还没有实现。
- 502 Bad Gateway:表示服务器作为网关或代理时,从上游服务器收到了无效的响应。
- 503 Service Unavailable:表示服务器暂时无法处理请求,因为服务器过载或维护中。
了解这些状态码对于诊断和解决Web应用程序中的问题至关重要,特别是在出现404(找不到资源)或500(内部服务器错误)这样的常见错误时,开发者可以通过这些状态码快速定位问题所在。