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:失败
相关推荐
可爱系程序猿4 小时前
Windows 11 添加共享打印机提示 0x00000bc4:从 RPC 发现到策略配置排查
windows·网络协议·rpc
草莓熊Lotso1 天前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
XR1234567881 天前
汽车制造园区网络怎么建?柔性产线与 AGV 的选型逻辑
网络·汽车·制造
IT大白鼠1 天前
MSF二次开发与自定义模块编写
网络·安全·web安全·msf
Julien20041 天前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
kekekzt2 天前
TCP协议的粘包问题介绍,IP分片,MTU,MSS,滑动窗口的概念及之间的关系
网络·网络协议·tcp/ip
mooooooooooye2 天前
2026 年跨平台 SSH 客户端怎么选?Xterminal、Termius、MobaXterm 谁更合适
服务器·网络·ssh
Blockchina2 天前
Codex 实战:从一句需求到可验收的 Linux 主机巡检脚本
运维·服务器·网络
江安下小雨2 天前
muduo网络库(十六):新增连接池模块
网络·c++
aiot189189352182 天前
机场候机大厅高空场景技术红线!蓝牙AOA不能做手机导航??!!
大数据·网络·人工智能·蓝牙aoa