HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种基于 TCP/IP 的应用层协议,用于在客户端和服务器之间传输超文本(如 HTML、图片、视频等)。其基本原理包括:
- 请求 – 响应模式:客户端发送请求,服务器接收并处理后返回响应
- 无状态性:服务器不会保留客户端的历史连接信息,每次请求都是独立的
- 基于 TCP 连接:HTTP 使用 TCP 作为传输层协议,确保数据可靠传输
- 明文传输:HTTP 默认不加密数据(HTTPS 通过 TLS/SSL 加密)
- 请求方法:常见的有 GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等 通常存在RESTful(Representational State Transfer)规范
- 状态码:服务器通过状态码表示请求处理结果(如 200 表示成功,404 表示资源不存在)
HTTP 请求和响应都由三部分组成:
- 请求行 / 响应行
- 请求头 / 响应头(Header)
- 消息体(Body)
header中的content-type关系到如何解析参数以及数据,所以也是相当重要的头
常见的 Content-Type 类型
- 文本类型
text/plain:纯文本(默认字符编码可能因环境而异)text/html:HTML 文档(网页内容)text/css:CSS 样式表text/javascript:JavaScript 代码(旧标准,现在更推荐application/javascript)
- 应用程序类型
application/json:JSON 数据(API 接口常用)application/x-www-form-urlencoded:表单数据(默认的表单提交格式,数据会被编码为 key=value 形式)multipart/form-data:用于上传文件的表单数据(支持二进制文件)application/xml:XML 数据application/octet-stream:二进制流数据(不确定类型时的默认二进制类型)
- 图像类型
image/jpeg:JPEG 图片image/png:PNG 图片image/gif:GIF 图片
一个post请求示例:
HTTP
POST /api/submit HTTP/1.1
Host: example.com
Content-Type: application/json; charset=utf-8
Content-Length: 36
{"name": "Alice", "age": 30}一个响应示例:
HTTP
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 128
<html>
<body><h1>Hello World</h1></body>
</html>
