字数
1188 字
阅读时间
5 分钟
#计网
HTTP 状态码是服务器对客户端请求的响应,用于表示请求处理的结果。它们被分为五大类。
1xx - 信息性响应
表示请求已被接收,继续处理。
2xx - 成功响应
表示请求已成功被服务器接收、理解、并接受。
200 OK
- 含义:请求已成功,响应报文中包含了请求的资源。这是最常见的成功状态码。
204 No Content
- 含义:服务器成功处理了请求,但没有返回任何内容。响应报文中只有头部,没有报文主体。
- 使用场景:常用于
PUT或DELETE请求成功后,或客户端发送一个“心跳”请求,服务器确认存活但无需返回数据。
3xx - 重定向
表示需要客户端采取进一步的操作才能完成请求。
301 Moved Permanently
- 含义:请求的资源已被永久移动到新的 URI。
- 浏览器行为:浏览器会自动重定向到新地址,并且搜索引擎会更新其索引。未来的请求应该直接使用新的 URI。
302 Found
- 含义:请求的资源被临时移动到新的 URI。
- 浏览器行为:浏览器会自动重定向到新地址,但搜索引擎不会更新其索引。未来的请求应该继续使用原始 URI。
- 使用场景:
- 用户未登录时访问个人中心,临时重定向到登录页。
- 活动期间,访问首页临时重定向到活动页。
304 Not Modified
- 含义:资源未被修改,客户端可以直接使用本地缓存的版本。
- 触发条件:这是一个与浏览器缓存相关的状态码。当客户端发起一个条件请求(如带有
If-None-Match或If-Modified-Since头部)时,如果服务器发现资源没有变化,就会返回304。 - 效果:响应报文中不包含主体内容,只包含头部,从而节省带宽,提高性能。
4xx - 客户端错误
表示客户端的请求有误,服务器无法处理。
400 Bad Request
- 含义:服务器无法理解客户端的请求,通常是因为请求报文存在语法错误。
- 常见原因:请求参数格式错误、请求体过大、头部字段无效等。
4.3 Forbidden
- 含义:服务器理解请求,但拒绝执行。客户端没有访问该资源的权限。
- 常见原因:身份认证失败、IP 地址被禁止、权限不足等。
404 Not Found
- 含义:服务器上找不到请求的资源。
- 常见原因:URL 输入错误,或资源已被删除。
405 Method Not Allowed
- 含义:服务器禁止使用客户端请求中指定的方法(如对只读资源使用
POST)。 - 注意:响应中必须包含一个
Allow头部,指明该资源允许的方法(如Allow: GET, HEAD)。客户端可以通过OPTIONS方法预检来查询服务器允许的方法。
5xx - 服务器错误
表示服务器在处理请求的过程中发生了错误。
500 Internal Server Error
- 含义:服务器内部遇到了一个未知的、无法处理的错误。这是一个通用的服务器端错误状态码。
- 常见原因:后端代码出现 Bug、数据库连接失败、服务器资源耗尽等。
502 Bad Gateway
- 含义:作为网关或代理的服务器,从上游服务器收到了一个无效的响应。
- 常见原因:后端服务挂了、网关配置错误、上游服务器过载。
503 Service Unavailable
- 含义:服务器当前无法处理请求,通常是由于过载或正在进行停机维护。这是一个临时状态。
504 Gateway Timeout
- 含义:作为网关或代理的服务器,未能及时从上游服务器获得响应。
- 常见原因:后端代码执行超时(如一个非常耗时的查询)、上游服务器响应慢。