一篇速懂HTTP协议
HTTP协议本身不记录任何请求状态,每一次请求都是独立的、无关联的。服务器无法通过HTTP协议本身,识别多次请求是否来自同一个浏览器(客户端)。示例:浏览器第一次请求“登录接口”,服务器验证通过后,第二次请求“查询数据接口”,服务器无法通过HTTP协议判断这两次请求来自同一个已登录用户。
一、HTTP协议基础定义与通信模型
1. 协议本质
HTTP(超文本传输协议,可接收html)是浏览器与服务器之间的通信规范,定义了双方交互的格式、规则与细节,是Web通信的核心协议,用于实现超文本(文本、图片、视频等)的传输。
2. 核心通信模型
HTTP通信遵循“请求-响应”模式,具有明确的单向性,核心特点如下:
-
主动发起方:只能是浏览器(客户端),服务器无法主动向浏览器发送请求。
-
被动响应方:服务器仅在接收浏览器请求后,才会返回对应响应数据。
-
完整流程:浏览器发起请求 → 服务器接收并处理请求 → 服务器返回响应 → 浏览器接收并渲染响应结果,构成一次完整的HTTP交互。

二、HTTP协议核心特性——无状态性
1. 无状态定义
HTTP协议本身不记录任何请求状态,每一次请求都是独立的、无关联的。服务器无法通过HTTP协议本身,识别多次请求是否来自同一个浏览器(客户端)。
示例:浏览器第一次请求“登录接口”,服务器验证通过后,第二次请求“查询数据接口”,服务器无法通过HTTP协议判断这两次请求来自同一个已登录用户。
2. 无状态带来的问题与解决方案
核心问题:无法实现“身份关联”(如登录后才能操作、购物车与用户绑定等场景)。

解决方案:引入状态管理机制,最常用的是Cookie,以及Session、Token等方式。
三、HTTP请求细节

1. 核心请求方法:GET与POST
HTTP请求方法用于指定客户端对服务器的操作类型,其中GET和POST是最常用的两种,核心差异如下表所示:
|
对比维度 |
GET请求 |
POST请求 |
|---|---|---|
|
参数传递方式 |
通过URL传递,以“问号(?)”分隔URL与参数,多个参数用“&”连接 |
参数封装在请求体中,不显示在URL上 |
|
安全性 |
不安全,参数暴露在URL中,可被查看、缓存 |
相对安全,参数不暴露,适合传输敏感数据(如密码) |
|
数据量限制 |
有限制(通常不超过2KB),受URL长度限制 |
无限制,可传输大量数据(如文件上传) |
|
适用场景 |
查询操作(如查询列表、搜索数据) |
增、删、改操作,以及文件上传、登录提交等 |
|
缓存特性 |
可被浏览器缓存 |
默认不被缓存 |
2. 关键请求头
请求头是HTTP请求报文的重要组成部分,用于向服务器传递客户端的附加信息,常用关键请求头如下:
-
Accept:指定客户端可接收的响应数据格式(如text/html、application/json)。
-
Accept-Language:指定客户端可接收的语言(如zh-CN、en-US),用于实现多语言适配。
-
Cookie:携带客户端保存的状态信息(如登录凭证),用于服务器识别用户身份。
-
User-Agent:传递客户端浏览器信息(如浏览器类型、版本、操作系统),服务器可据此适配不同页面。
四、HTTP响应细节
1. 核心响应状态码
状态码是服务器返回给客户端的“响应状态标识”,用3位数字表示,分为5大类,本次培训重点讲解以下核心状态码:
-
200 OK:请求成功,服务器正常返回请求的数据(如登录成功、查询成功)。
-
400 Bad Request:错误请求,客户端提交的请求参数格式错误(如参数缺失、格式不合法)。
-
404 Not Found:资源未找到,服务器无法找到客户端请求的资源(如URL路径错误、页面不存在)。
-
405 Method Not Allowed:方法不支持,客户端使用的请求方法(如GET/POST),服务器不支持(如后端只处理POST请求,客户端用了GET)。
-
500 Internal Server Error:服务器内部错误,服务器处理请求时出现异常(如代码报错、数据库连接失败)。
注意:状态码首位数字代表类别(1xx:信息提示、2xx:成功、3xx:重定向、4xx:客户端错误、5xx:服务器错误)。
五、状态管理机制——Cookie

1. Cookie工作原理(解决HTTP无状态问题)
Cookie是存储在客户端(浏览器)的小型文本文件,用于保存用户状态信息,核心工作流程如下(分4步):
-
客户端(浏览器)发起登录请求,服务器验证用户名、密码通过后,生成包含用户身份信息的Cookie。
-
服务器通过HTTP响应(Response),将Cookie信息发送给浏览器。
-
浏览器接收后,将Cookie保存到本地(可设置有效期,过期后自动删除)。
-
后续客户端发起任何请求时,都会自动携带本地保存的Cookie,服务器通过Cookie中的信息,识别出该请求来自哪个用户,实现状态关联。
2. Cookie安全性说明
Cookie存储在客户端,存在一定安全隐患(如被篡改、窃取),可通过以下方式提升安全性:
-
设置有效期:指定Cookie的过期时间,避免长期保存。
-
限制路径:设置Cookie仅在指定的URL路径下生效,减少被其他页面获取的风险。
-
加密存储:将敏感信息(如用户ID)加密后再存入Cookie,避免明文泄露。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)