HTTP协议
概述
HTTP (Hypertext Transfer Protocol),即超文本传输协议,是一种用于在客户端和服务器之间传输超文本(例如网页、图片、音频、视频等)的通信协议。它是万维网(WWW)的基础,负责在浏览器(客户端)和 web 服务器之间交换信息。HTTP 是一个 应用层 协议,位于 OSI 模型的第七层,通常通过 TCP(传输控制协议)进行通信。
HTTP 是无状态的、面向请求/响应的协议,意思是每一次请求都是独立的,服务器不会保存客户端的状态。每次客户端发起请求,服务器都必须处理并响应,即使是同一个客户端的连续请求,也被视为独立的。
HTTP 请求/响应模型
HTTP 协议基于请求/响应模型,通信流程包括两部分:客户端发送请求,服务器返回响应。
1. HTTP 请求报文(Request Message)
一个 HTTP 请求报文主要由以下几个部分组成:
-
请求行(Request Line)
-
请求方法(Request Method)
:定义了客户端希望进行的操作,常见的 HTTP 请求方法包括:
GET
:请求指定的资源,通常用于获取网页或文件。POST
:将数据提交到服务器,常用于表单提交。PUT
:上传数据,通常用于更新服务器上的资源。DELETE
:删除指定的资源。HEAD
:与GET
方法类似,但只返回响应头,不返回实际内容。PATCH
:用于对已有资源进行部分修改。
-
请求 URL(Request URL):指定资源的位置,例如
https://www.example.com/index.html
。 -
协议版本(HTTP Version):指定使用的 HTTP 协议版本,通常是
HTTP/1.1
或HTTP/2
。
示例:
GET /index.html HTTP/1.1
-
-
请求头部(Request Headers) 请求头部包含了请求的元信息,描述客户端环境、请求内容类型、认证信息等。例如:
User-Agent
:指定发起请求的客户端软件信息。Accept
:指定客户端能够处理的内容类型(如text/html
、application/json
等)。Host
:指定请求目标的主机名(用于虚拟主机的支持)。Cookie
:包含发送给服务器的 Cookie 数据。Authorization
:包含授权信息,用于身份验证。
示例:
User-Agent: Mozilla/5.0 Accept: text/html,application/xhtml+xml
-
请求体(Request Body) 请求体通常在
POST
、PUT
等方法中使用,用于传送数据到服务器(例如表单提交的数据、JSON 数据等)。GET<