HTTP 常见问题
HTTP 状态码
状态码分类
| 状态码范围 | 类别 | 描述 |
|---|---|---|
| 1XX | 信息性状态码 | 请求已被接收,继续处理 |
| 2XX | 成功状态码 | 请求已成功被服务器接收、理解,并接受 |
| 3XX | 重定向状态码 | 需要后续操作才能完成这一请求 |
| 4XX | 客户端错误状态码 | 请求包含语法错误或无法完成请求 |
| 5XX | 服务器错误状态码 | 服务器在处理请求的过程中发生了错误 |
常用状态码
| 状态码 | 含义 | 描述 |
|---|---|---|
| 200 | OK | 请求成功。一般用于GET与POST请求 |
| 301 | Moved Permanently | 永久重定向,请求的页面已经转移到新的URL |
| 302 | Found | 临时重定向,请求的页面临时转移到新的URL,后续使用原有地址 |
| 304 | Not Modified | 自从上次请求后,请求的网页未修改过,服务器返回此状态码 |
| 400 | Bad Request | 服务器无法理解请求的格式,客户端不应该尝试再次使用相同的内容 |
| 401 | Unauthorized | 请求未授权,需要通过HTTP认证 |
| 403 | Forbidden | 服务器拒绝执行此请求 |
| 404 | Not Found | 请求的资源未找到,服务器无法找到给定的资源 |
| 500 | Internal Server Error | 服务器遇到错误,无法完成请求 |
| 502 | Bad Gateway | 服务器作为网关或代理,从上游服务器收到无效响应 |
| 503 | Service Unavailable | 服务器当前无法处理请求,通常是由于过载或维护 |
HTTP1、HTTP2、HTTP3 的区别
| 特性 | HTTP/1.0 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|---|
| 协议类型 | 无状态协议 | 无状态协议 | 二进制格式 | 基于QUIC |
| 连接 | 每个请求单独TCP连接 | 持久连接(多个请求共享一个TCP连接) | 多路复用(单连接上并行传输多请求) | 减少连接延迟 |
| 管道化 | 不支持 | 支持(有限度) | 支持(更有效) | 支持 |
| 服务器推送 | 不支持 | 不支持 | 支持 | 支持 |
| 头部压缩 | 不支持 | 不支持 | 支持(HPACK) | 支持(可能使用不同的压缩算法) |
| 安全性 | 依赖外部加密协议(如SSL/TLS) | 依赖外部加密协议(如SSL/TLS) | 增强(TLS 1.2+ 加密默认) | 内建TLS加密 |
| 队头阻塞 | 可能发生 | 可能发生 | 减少(流级别的多路复用) | 无(改进的丢包恢复) |
| 主要改进 | 初始版本 | 持久连接、更多缓存控制、宿主头支持 | 性能提升(头部压缩、多路复用、服务器推送) | 性能和安全(基于QUIC) |