一、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步):

  1. 客户端(浏览器)发起登录请求,服务器验证用户名、密码通过后,生成包含用户身份信息的Cookie。

  2. 服务器通过HTTP响应(Response),将Cookie信息发送给浏览器。

  3. 浏览器接收后,将Cookie保存到本地(可设置有效期,过期后自动删除)。

  4. 后续客户端发起任何请求时,都会自动携带本地保存的Cookie,服务器通过Cookie中的信息,识别出该请求来自哪个用户,实现状态关联。

2. Cookie安全性说明

Cookie存储在客户端,存在一定安全隐患(如被篡改、窃取),可通过以下方式提升安全性:

  • 设置有效期:指定Cookie的过期时间,避免长期保存。

  • 限制路径:设置Cookie仅在指定的URL路径下生效,减少被其他页面获取的风险。

  • 加密存储:将敏感信息(如用户ID)加密后再存入Cookie,避免明文泄露。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐