HTTP(HyperText Transfer Protocol,超文本传输协议)是用于分布式、协作式、超媒体信息系统的应用层协议。它基于TCP/IP协议栈进行工作,用于从WWW服务器传输超文本到本地浏览器的传送协议。HTTP协议的基本格式包括请求(Request)和响应(Response)两部分,下面分别介绍它们的基本格式。
1.HTTP 请求(Request)
HTTP请求由三部分组成:请求行(Request Line)、请求头(Header)、空行、正文(Body,可选)。
1.1 请求行
请求行包含了用于请求的方法、请求的URI(统一资源标识符)和HTTP版本。格式如下:
<方法> <URI> <HTTP版本> |
- 方法:常用的HTTP方法包括GET、POST、PUT、DELETE、HEAD、OPTIONS和TRACE等。这些方法定义了要执行的操作类型。
- URI:统一资源标识符,指定了要访问的资源的位置。
- HTTP版本:例如HTTP/1.1,指示了客户端使用的HTTP版本。
1.2 请求头
请求头从第二行开始,直到空行结束,包含了一系列的键值对,用于描述请求的元数据。例如:
Host: www.example.com | |
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3 | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 | |
... |
1.3 空行
请求头的结束标志
1.4 正文
正文(Body)是可选的,主要用于POST和PUT请求中,包含了要发送给服务器的数据。请求体的格式由Content-Type头指定,例如application/json
、application/x-www-form-urlencoded
等。
2. HTTP 响应(Response)
HTTP响应也由三部分组成:状态行(Status Line)、响应头(Header)、空行、正文(Body,可选)。
1.1 状态行
状态行包含了HTTP版本、状态码和状态消息。格式如下:
<HTTP版本> <状态码> <状态消息> |
- HTTP版本:例如HTTP/1.1,与请求中的HTTP版本相对应。
- 状态码:一个三位数字,用于表示请求的结果。例如,200表示成功,404表示未找到资源。
- 状态消息:对应于状态码的文本描述。
1.2 响应头
响应头与请求头类似,从第二行开始,直到空行结束,也是一系列的键值对,用于描述响应的元数据。例如:
Content-Type: text/html; charset=UTF-8 | |
Content-Length: 1234 | |
... |
1.3. 空行
响应头的结束标志
1.4 正文
正文(Body)包含了服务器返回给客户端的数据。它的格式和编码方式由响应头中的Content-Type
等字段指定。
HTTP协议通过这种请求-响应“一问一答模型”的方式,实现了客户端与服务器之间的通信。