HTTP协议
HTTP(超文本传输协议,HyperText Transfer Protocol) 是一个用于传输超媒体文档的应用层协议。
# URL
# 格式
https://john:doe@www.example.com:8080/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
| | | | | | |
协议 认证信息 服务器地址 端口号 文件路径 查询参数 片段
1
2
3
4
2
3
4
# urlencode 和 urldecode
- 编码(URLEncode)
URL 编码是一种机制,用于将 URL 中不允许或有特殊用途的字符(空格、中文、&, %, =, ?, #, + 等字符)都需要被转换转换为一种以 % 开头、后跟两个十六进制数字表示的格式。
例如:Bing 搜索C++&?@=//,网址为https://cn.bing.com/search?q=C%2B%2B%26%3F%40%3D%2F%2F&qs=...,可以看出了编码
- 解码(URLDecode)
解码C%2B%2B%26%3F%40%3D%2F%2F可以得到C++&?@=//
# HTTP 协议格式

# HTTP 方法
| 方法 | 说明 | 支持的 HTTP 版本 |
|---|---|---|
| GET | 获取指定的资源 | 1.0、1.1 |
| POST | 传输实体主体,通常用于提交数据 | 1.0、1.1 |
| PUT | 传输文件,用于替换整个目标资源 | 1.0、1.1 |
| HEAD | 获得报文首部,不返回响应体 | 1.0、1.1 |
| DELETE | 删除指定的文件或资源 | 1.0、1.1 |
| OPTIONS | 询问服务器支持的方法 | 1.1 |
| TRACE | 追踪请求路径,用于诊断和测试 | 1.1 |
| CONNECT | 要求用隧道协议连接代理 | 1.1 |
- GET 方法是通过 url 传参的,
http://1.15.148.63:8080/login/?name=zhangsan&password=12345 - POST 方法是通过正文传参的(私密)
POST 方法能传递更多的参数,因为 url 的长度是有限制的,POST 方法通过正文传参就可以携带更多的数据。
# HTTP 状态码
| 类别 | 原因短语 | 描述 |
|---|---|---|
| 1XX | Informational(信息性状态码) | 接收的请求正在处理 |
| 2XX | Success(成功状态码) | 请求正常处理完毕 |
| 3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
| 4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
| 5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
# HTTP 常见 Header
- Content-Type: 数据类型(text/html 等)
- Content-Length: Body 的长度
- Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
- User-Agent: 声明用户的操作系统和浏览器版本信息;
- referer: 当前页面是从哪个页面跳转过来的;
- Location: 搭配 3xx 状态码使用, 告诉客户端接下来要去哪里访问;
- Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能
- Connection: keep-alive 和 close,表示 http 请求的是否保持长连接,即链接是否复用
# HTTPS
HTTPS = HTTP + SSL/TLS 加密层
其中加密层本身也是属于应用层的,它会对用户的个人信息进行各种程度的加密。HTTPS 在交付数据时先把数据交给加密层,由加密层对数据加密后再交给传输层。
- 对称加密
加密和解密使用同一把密钥,采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密。
例如,简单的对称加密:按位异或

- 非对称加密
采用公钥和私钥来进行加密和解密,用其中一个密钥进行加密就必须用另一个密钥进行解密,这种加密方法称为非对称加密。
- 引入证书

上次更新: 2025/11/11, 22:03:54