HPPT协议基本概念
HTTP(超文本传输协议,HyperText Transfer Protocol)是用于在 Web 上传输超文本(如 HTML)的应用层协议。它是万维网(WWW)通信的基础。HTTP 定义了客户端和服务器之间的请求和响应的格式。
客户端:发出请求的一方,通常是浏览器或其他 HTTP 客户端。
服务器:接收并处理请求,返回响应的一方,通常是 Web 服务器。
HTTP 请求:由客户端发送到服务器,包含请求方法、URL、协议版本、头部信息和可选的请求体。
HTTP 响应:由服务器发送到客户端,包含协议版本、状态码、状态描述、头部信息和可选的响应体。
HTTP 请求
HTTP 请求方法
GET:请求资源,不应包含请求体。常用于获取数据。
POST:提交数据给服务器,通常包含请求体。常用于表单提交。
PUT:更新资源,通常包含请求体。
DELETE:删除资源。
请求行
HTTP 请求行是 HTTP 请求报文的第一行,用于描述客户端希望执行的操作以及目标资源。请求行包括三个部分:请求方法、请求目标(URI),以及 HTTP 版本。
例如:
GET /index.html HTTP/1.1
GET表示要获取资源,index.html资源路径,HTTP/1.1协议版本。
例如:
POST /submit-form HTTP/1.1
POST表示要添加资源,submit-form资源路径,HTTP/1.1协议版本。
请求头
HTTP 请求头(Request Headers)是 HTTP 请求报文的重要组成部分,它包含了一系列键值对,用于向服务器传递关于客户端环境、请求体内容、期望的响应类型等信息。请求头位于请求行之后,请求体之前。
例如:
#名字: 值
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
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
Connection: keep-alive
请求体
HTTP 请求体(Request Body)是 HTTP 请求报文的一部分,它包含了客户端发送到服务器的数据。请求体通常用于 POST
、PUT
、PATCH
等需要传输数据的请求方法,而 GET
请求一般不包含请求体。
POST /submit-form HTTP/1.1
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
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
Connection: keep-alive
name=John+Doe&age=30 #请求体,请求头和请求体之间 插入一个空行, 隔开 它们。
HTTP 响应
HTTP 状态码
- 1xx(信息性状态码):请求已接收,继续处理。
- 2xx(成功状态码):请求已成功被接收、理解和接受。
- 200 OK:请求成功。
- 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:服务器暂时不可用。
状态行
HTTP 状态行(Status Line)是 HTTP 响应报文的第一行,用于向客户端传达服务器对请求的处理结果。状态行由三个部分组成:HTTP 版本、状态码和状态描述。状态行是 HTTP 响应报文的关键部分,它向客户端明确传达了服务器对请求的处理结果。客户端可以根据状态行的信息,决定下一步的操作。例如,如果状态码是 200
,表示请求成功,客户端可以处理响应体中的数据;如果状态码是 404
,表示资源未找到,客户端可以显示相应的错误信息。
以下是几个示例,展示了不同的 HTTP 状态行:
#200 OK
HTTP/1.1 200 OK
- HTTP 版本:
HTTP/1.1
- 状态码:
200
- 状态描述:
OK
#404 Not Found
HTTP/1.1 404 Not Found
- HTTP 版本:
HTTP/1.1
- 状态码:
404
- 状态描述:
Not Found
#500 Internal Server Error
HTTP/1.1 500 Internal Server Error
- HTTP 版本:
HTTP/1.1
- 状态码:
500
- 状态描述:
Internal Server Error
响应头
HTTP 响应头(Response Headers)是 HTTP 响应报文的一部分,它包含了服务器对客户端的请求进行响应时,附带的额外信息。这些头部信息有助于客户端(通常是浏览器)了解响应的属性、内容类型、缓存策略等。响应头的主要功能是向客户端传递关于响应内容、服务器状态、缓存控制等方面的信息,以便客户端能够正确解析和显示响应内容。
例如:
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.4.1 (Unix)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
响应体
HTTP 响应体(Response Body)是 HTTP 响应报文的一部分,包含服务器返回给客户端的实际数据内容。响应体的内容类型和格式由响应头中的 Content-Type
指定。响应体可以是各种类型的数据,包括 HTML 文档、图像、JSON 数据、纯文本等。请求消息体一样,WEB API 响应消息体 通常也是某种格式的文本,常见的有:
- Json
- Xml
- www-form-urlencoded