HTTP、Cookie、Session知识小计

一、HTTP 协议核心原理

1. HTTP 是什么

HTTP 是超文本传输协议 ,是浏览器和服务器之间通信的标准规则。所有网页、接口、图片、数据传输,都基于 HTTP 完成。

2. HTTP 最重要特性:无状态

无状态 = 服务器不记住任何用户。每一次请求都是独立的,服务器不知道:

  • 是谁发的请求
  • 之前有没有发过请求
  • 有没有登录

这就是必须使用 Session 实现登录状态的根本原因。

3. GET 请求详解

作用

获取数据、查询数据

特点

  • 参数拼接在 URL 地址后面
  • 可见、不安全,不能传密码等敏感信息
  • 长度有限制(大约 2KB 以内)
  • 会被浏览器缓存、保存到历史记录
  • 幂等:多次请求结果一样
  • 适合:查图书、查列表、查购物车

4. POST 请求详解

作用

提交数据、新增、修改、删除、登录

特点

  • 参数放在请求体中,不在 URL 显示
  • 安全、隐私性强
  • 数据大小无限制
  • 不会被缓存
  • 适合:登录、加入购物车、提交表单

5. GET 与 POST 最核心区别

  • 查数据 → GET
  • 传敏感数据 / 改数据 → POST

二、会话技术:Cookie 与 Session(必考重点)

1. 为什么需要会话?

因为 HTTP 无状态,服务器无法识别用户身份。必须通过会话技术让服务器 "记住" 用户。

  • 保存在浏览器中的一小段文本数据
  • 由服务器创建,通过响应头返回给浏览器
  • 浏览器之后每次请求都会自动带上 Cookie
  • 容量小(最多几 KB)、可被用户禁用、可篡改、不安全

3. Session 原理

  • 保存在服务器内存中的对象
  • 每个用户拥有独立的 Session
  • 服务器只给浏览器一个 SESSIONID
  • 真正的用户信息(用户 ID、登录状态)存在服务器
  • 安全、可靠、不能被篡改
  • Session 依赖 Cookie 传递 SESSIONID
  • Cookie 只存 ID,Session 存真实数据
  • 关闭浏览器 → Cookie 失效 → Session 无法识别

对比:

对比维度 Cookie Session
存储位置 浏览器客户端 服务器端
存储内容 只存字符串(通常是 SESSIONID),也可直接存用户数据 存真实用户数据:用户 ID、登录状态、权限等
安全性 低:数据暴露在客户端,可被篡改、窃取 高:数据只在服务器,客户端拿不到真实信息
容量限制 约 4KB 无限制(服务器内存决定)
生命周期 可设置持久化时间,或随浏览器关闭而失效 依赖SESSIONID,默认超时 / 服务器重启后失效
依赖关系 不依赖 Session 依赖 Cookie 传递 SESSIONID
使用场景 记住登录状态(如 "记住我")、用户偏好设置 登录会话管理、用户身份识别、购物车数据
典型问题 易被篡改、窃取,不适合存敏感数据 服务器压力较大,Session 共享需要额外处理

5. 登录流程(Session 核心逻辑)

  1. 用户输入账号密码发送请求
  2. 后端校验成功
  3. 服务器创建 Session,把用户 ID存入 Session
  4. 服务器自动把 SESSIONID 写入浏览器 Cookie
  5. 后续请求浏览器自动带 SESSIONID
  6. 服务器通过 ID 找到对应用户 → 识别登录状态

6. 一句话区分

Cookie 存在浏览器,不安全;Session 存在服务器,安全。

四、Servlet 核心作用(后端控制层)

1. Servlet 是什么

运行在服务器端的 Java 程序,专门处理浏览器请求。

2. Servlet 的四大功能

  1. 接收前端请求参数
  2. 获取 Session,判断用户是否登录
  3. 调用数据库执行增删改查
  4. 返回 JSON 格式结果给前端

五、前后端交互完整流程

1. 前端做什么

  • 收集用户输入(账号、密码、图书 ID)
  • 通过 AJAX 发送请求
  • 传递参数给后端
  • 接收 JSON 结果
  • 根据状态码判断成功 / 失败
  • 弹窗提示、页面跳转、渲染列表

2. 后端做什么

  • 接收请求
  • 获取参数
  • 判断登录状态(Session)
  • 操作数据库
  • 返回固定格式 JSON(code + message)

3. 前后端交互规范

统一使用 JSON 格式。通过 code 状态码判断结果:

  • 200:成功
  • 401:未登录
  • 999 / 500:失败
相关推荐
XS0301061 小时前
HTTP协议
网络·网络协议·http
暴力求解1 小时前
Linux--网络-->UDP_socket
linux·网络·网络协议·udp·操作系统
難釋懷1 小时前
Redis网络模型-单线程和多线程网络模型变更
网络·redis·git
顶点多余1 小时前
传输层协议TCP详解----下
网络·网络协议·tcp/ip
哼?~1 小时前
数据链路层
网络
想唱rap1 小时前
NAT、内网穿透、代理服务
java·linux·网络·网络协议·udp·智能路由器
H Journey2 小时前
TCP三次握手
网络协议·tcp/ip·三次握手
liulilittle2 小时前
TCP BBR调优及监控
linux·网络·网络协议·tcp/ip·win
程思扬2 小时前
Android 悬浮窗状态错乱终极解决方案:告别 onResume
android·网络