Interview AiBoxInterview AiBox 实时 AI 助手,让你自信应答每一场面试
请解释常见的HTTP状态码及其含义。
题型摘要
HTTP状态码是服务器响应请求时返回的三位数字代码,分为五大类:1xx(信息性)、2xx(成功)、3xx(重定向)、4xx(客户端错误)和5xx(服务器错误)。常见的状态码包括200(成功)、301/302(重定向)、401/403/404(客户端错误)和500(服务器错误)。前端开发者需要理解这些状态码的含义,以便正确处理响应、设计友好的错误页面,并提供良好的用户体验。
HTTP状态码及其含义
HTTP状态码是服务器在响应客户端请求时返回的三位数字代码,用于表示服务器对请求的处理结果。根据第一位数字,HTTP状态码可以分为五大类。
HTTP状态码分类
1xx 信息性状态码 (Informational)
表示请求已接收,继续处理。
| 状态码 | 名称 | 含义 |
|---|---|---|
| 100 | Continue | 服务器已收到请求的初始部分,客户端应继续请求的剩余部分 |
| 101 | Switching Protocols | 服务器根据客户端的请求切换协议 |
| 102 | Processing | 服务器已收到并正在处理请求,但尚未完成响应 |
2xx 成功状态码 (Success)
表示请求已成功被服务器接收、理解、并接受。
| 状态码 | 名称 | 含义 |
|---|---|---|
| 200 | OK | 请求成功,服务器返回所请求的数据 |
| 201 | Created | 请求成功,并且服务器创建了新的资源 |
| 202 | Accepted | 服务器已接受请求,但尚未处理 |
| 204 | No Content | 服务器成功处理了请求,但没有返回任何内容 |
| 206 | Partial Content | 服务器成功处理了部分GET请求 |
3xx 重定向状态码 (Redirection)
表示需要后续操作才能完成请求。
| 状态码 | 名称 | 含义 |
|---|---|---|
| 301 | Moved Permanently | 请求的资源已永久移动到新位置 |
| 302 | Found | 请求的资源临时移动到新位置 |
| 303 | See Other | 对应的资源的另一个URI,应使用GET方法获取 |
| 304 | Not Modified | 资源未被修改,可使用缓存的版本 |
| 307 | Temporary Redirect | 请求的资源临时移动到新位置,保持请求方法不变 |
| 308 | Permanent Redirect | 请求的资源永久移动到新位置,保持请求方法不变 |
4xx 客户端错误状态码 (Client Error)
表示客户端似乎发生了错误,妨碍了服务器的处理。
| 状态码 | 名称 | 含义 |
|---|---|---|
| 400 | Bad Request | 客户端请求有语法错误,服务器无法理解 |
| 401 | Unauthorized | 请求未经授权,需要身份验证 |
| 403 | Forbidden | 服务器理解请求,但拒绝执行 |
| 404 | Not Found | 服务器无法根据客户端的请求找到资源 |
| 405 | Method Not Allowed | 请求方法不被允许 |
| 408 | Request Timeout | 服务器等待请求时超时 |
| 409 | Conflict | 请求与服务器当前状态冲突 |
| 413 | Payload Too Large | 请求实体过大 |
| 414 | URI Too Long | 请求的URI过长 |
| 429 | Too Many Requests | 客户端在规定时间内发送了太多请求 |
5xx 服务器错误状态码 (Server Error)
表示服务器在处理请求的过程中发生了错误。
| 状态码 | 名称 | 含义 |
|---|---|---|
| 500 | Internal Server Error | 服务器内部错误,无法完成请求 |
| 501 | Not Implemented | 服务器不支持请求的功能 |
| 502 | Bad Gateway | 服务器作为网关需要得到一个处理这个请求的响应,但是未得到 |
| 503 | Service Unavailable | 服务器当前不能处理客户端的请求 |
| 504 | Gateway Timeout | 服务器作为网关需要得到一个处理这个请求的响应,但是未及时得到 |
| 505 | HTTP Version Not Supported | 服务器不支持请求的HTTP协议版本 |
常见HTTP状态码详解
200 OK
这是最常见的成功状态码,表示请求已成功处理,服务器返回了所请求的资源。
// 示例:成功获取数据
fetch('/api/data')
.then(response => {
if (response.status === 200) {
return response.json();
}
throw new Error('请求失败');
})
.then(data => console.log(data))
.catch(error => console.error(error));
301 Moved Permanently
表示请求的资源已永久移动到新的URL。搜索引擎会更新其索引,将旧URL替换为新URL。
302 Found
表示请求的资源临时移动到新的URL。搜索引擎不会更新其索引,继续使用原URL。
304 Not Modified
表示资源未被修改,可使用缓存的版本。这有助于减少网络流量和提高加载速度。
// 示例:利用缓存
fetch('/api/data', {
headers: {
'If-Modified-Since': 'Wed, 21 Oct 2022 07:28:00 GMT'
}
})
.then(response => {
if (response.status === 304) {
console.log('使用缓存数据');
// 从缓存中获取数据
} else if (response.status === 200) {
return response.json();
}
});
400 Bad Request
表示客户端请求有语法错误,服务器无法理解。常见原因包括:
- 请求参数格式错误
- 缺少必要的请求头
- 请求体格式不正确
401 Unauthorized
表示请求未经授权,需要身份验证。通常需要用户提供登录凭据。
// 示例:处理401错误
fetch('/api/protected-data')
.then(response => {
if (response.status === 401) {
// 跳转到登录页面
window.location.href = '/login';
}
return response.json();
});
403 Forbidden
表示服务器理解请求,但拒绝执行。即使经过身份验证,用户也没有权限访问所请求的资源。
404 Not Found
表示服务器无法根据客户端的请求找到资源。这是最常见的错误之一,可能原因包括:
- URL输入错误
- 资源已被删除
- 权限不足
500 Internal Server Error
表示服务器内部错误,无法完成请求。这通常是服务器端的问题,与客户端无关。
HTTP状态码处理最佳实践
前端处理策略
- 2xx 状态码:正常处理响应数据
- 3xx 状态码:根据重定向规则处理
- 4xx 状态码:显示相应的错误信息,指导用户操作
- 5xx 状态码:显示服务器错误信息,并提供重试选项
// 示例:综合处理HTTP状态码
fetch('/api/data')
.then(response => {
switch (response.status) {
case 200:
case 201:
return response.json();
case 304:
// 使用缓存数据
return getCachedData();
case 401:
// 跳转到登录页面
redirectToLogin();
throw new Error('未授权,请登录');
case 403:
throw new Error('无权限访问');
case 404:
throw new Error('资源不存在');
case 500:
throw new Error('服务器内部错误');
default:
throw new Error(`未知错误: ${response.status}`);
}
})
.then(data => {
// 处理数据
renderData(data);
})
.catch(error => {
// 显示错误信息
showError(error.message);
});
错误页面设计
对于常见的HTTP错误状态码,设计友好的错误页面可以提升用户体验:
- 400 Bad Request:提示用户检查输入
- 401 Unauthorized:提供登录选项
- 403 Forbidden:解释权限限制
- 404 Not Found:提供搜索框或返回首页的链接
- 5xx 服务器错误:显示维护信息或提供重试按钮
思维导图
Interview AiBoxInterview AiBox — 面试搭档
不只是准备,更是实时陪练
Interview AiBox 在面试过程中提供实时屏幕提示、AI 模拟面试和智能复盘,让你每一次回答都更有信心。
AI 助读
一键发送到常用 AI
HTTP状态码是服务器响应请求时返回的三位数字代码,分为五大类:1xx(信息性)、2xx(成功)、3xx(重定向)、4xx(客户端错误)和5xx(服务器错误)。常见的状态码包括200(成功)、301/302(重定向)、401/403/404(客户端错误)和500(服务器错误)。前端开发者需要理解这些状态码的含义,以便正确处理响应、设计友好的错误页面,并提供良好的用户体验。
智能总结
深度解读
考点定位
思路启发
相关题目
请解释TCP三次握手的过程。
TCP三次握手是建立可靠网络连接的关键过程,通过SYN、SYN+ACK和ACK三个数据包的交换,确保客户端和服务端都具备收发能力并同步序列号。第一次握手客户端发送SYN包并进入SYN_SENT状态;第二次握手服务端回复SYN+ACK包并进入SYN_RCVD状态;第三次握手客户端发送ACK包,双方都进入ESTABLISHED状态,连接建立完成。三次握手而非两次或四次的设计是为了在保证可靠性的同时避免不必要的延迟和潜在问题。
TCP和UDP有什么区别?
TCP和UDP是两种核心的传输层协议,主要区别在于:TCP是面向连接的可靠传输协议,通过三次握手建立连接,提供确认重传、流量控制和拥塞控制机制,保证数据不丢失、不重复、按序到达,适用于文件传输、电子邮件等高可靠性场景;UDP是无连接的不可靠传输协议,无需建立连接,直接发送数据报,不保证数据可靠性,但传输速度快、开销小,适用于实时音视频、在线游戏、DNS查询等实时性要求高的场景。选择哪种协议取决于应用对可靠性和实时性的需求权衡。
什么是跨域问题?如何解决前端跨域请求?
跨域问题是浏览器的同源策略导致的,限制了一个域的文档或脚本获取另一个域的资源。常见解决方案包括:JSONP(利用script标签无跨域限制)、CORS(通过HTTP头部控制访问权限)、代理服务器(同源转发)、WebSocket(双向通信协议)、postMessage(跨文档通信)、document.domain(设置相同主域)和window.name(利用窗口名称特性)。选择方案时需考虑兼容性、安全性和场景需求,现代应用首选CORS,实时通信可选WebSocket,无法控制服务器时可考虑代理。
什么是跨域?有哪些解决跨域的方法?
跨域是Web开发中因浏览器同源策略导致的限制,当协议、域名或端口不同时发生。解决跨域的主要方法有:1) CORS(跨域资源共享),通过服务器设置HTTP响应头实现,是最推荐的标准化方案;2) JSONP,利用script标签跨域特性,但仅支持GET请求;3) 代理服务器,通过同源服务器转发请求;4) WebSocket,双向通信协议,不受同源限制;5) postMessage,HTML5 API,用于窗口间安全通信;6) document.domain,适用于子域间通信;7) window.name和location.hash,利用浏览器特性实现但安全性较低。选择方案需考虑安全性、兼容性、通信类型和实现复杂度等因素。
请详细解释HTTPS的工作原理和加密过程。
HTTPS是HTTP的安全版本,通过SSL/TLS协议实现数据加密、身份验证和完整性保护。其工作原理主要分为两个阶段:SSL/TLS握手阶段和数据传输阶段。在握手阶段,客户端和服务器协商加密算法、验证服务器身份并生成会话密钥;在数据传输阶段,使用会话密钥进行对称加密通信。HTTPS结合了对称加密(效率高)和非对称加密(安全密钥交换)的优点,通过数字证书验证服务器身份,防止中间人攻击,并使用哈希函数保证数据完整性。随着网络安全意识的提高,HTTPS已成为网站的标准配置。