HTTP是用于在Web浏览器和Web服务器之间传输数据的基础协议
# 1. 基本概念
协议:HTTP是一种基于请求-响应模型的无状态协议。客户端(如浏览器)发送请求到服务器,服务器处理请求并返回响应。 无状态:每个HTTP请求都是独立的,不保留之前请求的状态。为了维持状态,需要使用Cookie、Session等机制。
# 2. HTTP 方法
GET:请求资源。请求参数会被附加在URL之后。 POST:向服务器提交数据。请求参数会放在请求体中。 PUT:更新资源。通常用于更新已存在的资源。 DELETE:删除资源。 HEAD:类似GET请求,但不返回响应体。 OPTIONS:请求可用的通信选项。 PATCH:部分更新资源。
# 3. HTTP 状态码
- 1xx(信息性状态码):请求已被接收,继续处理。
- 2xx(成功状态码):请求成功。例如:
- 200 OK:请求成功。
- 201 Created:资源成功创建。
- 3xx(重定向状态码):请求需要进一步操作以完成。例如:
- 301 Moved Permanently:永久重定向。
- 302 Found:临时重定向。
- 4xx(客户端错误状态码):请求包含错误。例如:
- 400 Bad Request:请求无效。
- 401 Unauthorized:需要身份验证。
- 404 Not Found:请求的资源不存在。
- 5xx(服务器错误状态码):服务器在处理请求时发生了错误。例如:
- 500 Internal Server Error:服务器内部错误。
- 502 Bad Gateway:无效响应。
- 503 Service Unavailable:服务器不可用。
# 4. HTTP 报文结构
请求报文: 请求行:包括请求方法、请求URI和HTTP版本。 请求头部:提供客户端信息、请求参数、身份验证等。 空行:用于分隔头部和消息体。 消息体:包含实际需要传输的数据,通常在POST请求中使用。 响应报文: 状态行:包括HTTP版本、状态码和状态描述。 响应头部:提供服务器信息、响应参数等。 空行:用于分隔头部和消息体。 消息体:包含实际返回的数据。
# 5. HTTP 头部字段
通用头部:如Date、Connection。 请求头部:如Host、User-Agent、Accept。 响应头部:如Server、Set-Cookie、Content-Type。 实体头部:如Content-Length、Content-Encoding。
# 6. HTTPS
HTTPS:HTTP over SSL/TLS,用于加密传输数据,确保数据传输的安全性。它通过SSL/TLS协议在HTTP上增加了数据加密层。 优点:数据加密、防止数据篡改和伪造、认证服务器身份。
# 7. 持久连接
HTTP/1.0:默认使用短连接,每次请求/响应都会建立和断开连接。 HTTP/1.1:默认使用持久连接(Keep-Alive),同一TCP连接可以发送多个请求和响应,减少连接建立和断开带来的开销。
# 8. HTTP/2
多路复用:同一个连接中可以发送多个请求和响应,不必按顺序处理。 头部压缩:减少头部大小,提高传输效率。 服务器推送:服务器可以主动向客户端推送资源。