|
| 1 | +--- |
| 2 | +title: HTTP 常见状态码(应用层) |
| 3 | +category: 计算机基础 |
| 4 | +tag: |
| 5 | + - 计算机网络 |
| 6 | +--- |
| 7 | + |
| 8 | +HTTP 状态码用于描述 HTTP 请求的结果,比如2xx 就代表请求被成功处理。 |
| 9 | + |
| 10 | + |
| 11 | + |
| 12 | +### 1xx Informational(信息性状态码) |
| 13 | + |
| 14 | +相比于其他类别状态码来说,1xx 你平时你大概率不会碰到,所以这里直接跳过。 |
| 15 | + |
| 16 | +### 2xx Success(成功状态码) |
| 17 | + |
| 18 | +- **200 OK** :请求被成功处理。比如我们发送一个查询用户数据的HTTP 请求到服务端,服务端正确返回了用户数据。这个是我们平时最常见的一个 HTTP 状态码。 |
| 19 | +- **201 Created** :请求被成功处理并且在服务端创建了一个新的资源。比如我们通过 POST 请求创建一个新的用户。 |
| 20 | +- **202 Accepted** :服务端已经接收到了请求,但是还未处理。 |
| 21 | +- **204 No Content** : 服务端已经成功处理了请求,但是没有返回任何内容。 |
| 22 | + |
| 23 | +这里格外提一下 204 状态码,平时学习/工作中见到的次数并不多。 |
| 24 | + |
| 25 | +[HTTP RFC 2616对204状态码的描述](https://tools.ietf.org/html/rfc2616#section-10.2.5)如下: |
| 26 | + |
| 27 | +> The server has fulfilled the request but does not need to return an |
| 28 | +> entity-body, and might want to return updated metainformation. The |
| 29 | +> response MAY include new or updated metainformation in the form of |
| 30 | +> entity-headers, which if present SHOULD be associated with the |
| 31 | +> requested variant. |
| 32 | +> |
| 33 | +> If the client is a user agent, it SHOULD NOT change its document view |
| 34 | +> from that which caused the request to be sent. This response is |
| 35 | +> primarily intended to allow input for actions to take place without |
| 36 | +> causing a change to the user agent's active document view, although |
| 37 | +> any new or updated metainformation SHOULD be applied to the document |
| 38 | +> currently in the user agent's active view. |
| 39 | +> |
| 40 | +> The 204 response MUST NOT include a message-body, and thus is always |
| 41 | +> terminated by the first empty line after the header fields. |
| 42 | +
|
| 43 | +简单来说,204状态码描述的是我们向服务端发送 HTTP 请求之后,只关注处理结果是否成功的场景。也就是说我们需要的就是一个结果:true/false。 |
| 44 | + |
| 45 | +举个例子:你要追一个女孩子,你问女孩子:“我能追你吗?”,女孩子回答:“好!”。我们把这个女孩子当做是服务端就很好理解 204 状态码了。 |
| 46 | + |
| 47 | +### 3xx Redirection(重定向状态码) |
| 48 | + |
| 49 | +- **301 Moved Permanently** : 资源被永久重定向了。比如你的网站的网址更换了。 |
| 50 | +- **302 Found** :资源被临时重定向了。比如你的网站的某些资源被暂时转移到另外一个网址。 |
| 51 | + |
| 52 | +### 4xx Client Error(客户端错误状态码) |
| 53 | + |
| 54 | +- **400 Bad Request** : 发送的HTTP请求存在问题。比如请求参数不合法、请求方法错误。 |
| 55 | +- **401 Unauthorized** : 未认证却请求需要认证之后才能访问的资源。 |
| 56 | +- **403 Forbidden** :直接拒绝HTTP请求,不处理。一般用来针对非法请求。 |
| 57 | +- **404 Not Found** : 你请求的资源未在服务端找到。比如你请求某个用户的信息,服务端并没有找到指定的用户。 |
| 58 | +- **409 Conflict** : 表示请求的资源与服务端当前的存状态在冲突,请求无法被处理。 |
| 59 | + |
| 60 | +### 5xx Server Error(服务端错误状态码) |
| 61 | + |
| 62 | +- **500 Internal Server Error** : 服务端出问题了(通常是服务端出Bug了)。比如你服务端处理请求的时候突然抛出异常,但是异常并为在服务端被正确处理。 |
| 63 | +- **502 Bad Gateway** :我们的网关将请求转发到服务端,但是服务端返回的却是一个错误的响应。 |
| 64 | + |
| 65 | +### 参考 |
| 66 | + |
| 67 | +- https://www.restapitutorial.com/httpstatuscodes.html |
| 68 | +- https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status |
| 69 | +- https://en.wikipedia.org/wiki/List_of_HTTP_status_codes |
| 70 | +- https://segmentfault.com/a/1190000018264501 |
| 71 | + |
0 commit comments