Skip to content

Latest commit

 

History

History
68 lines (41 loc) · 3.39 KB

35.md

File metadata and controls

68 lines (41 loc) · 3.39 KB

35 · 登录状态与 Cookie

由 pnpm docs:lessons 生成。教学脚本在 src/data/network-state.json,合同补充在 scripts/generate-network-state.mjs。本页含教师参考答案。

目标与原理

理解域、路径、有效期与常见 Cookie 属性。先修按 完整目录 的章节关系;基础操作、原理关系随本课讲解。

存下 Cookie 和随目标请求发送 Cookie,需要分别确认。

先建立边界

Domain、Path 与有效期影响是否发送,端口不隔离 Cookie

再核对证据

HttpOnly Cookie 无法由 document.cookie 读取,不代表不存在

最后验证结果

SameSite 与 Secure 的行为和站点、HTTPS 及浏览器环境有关;本课不模拟完整第三方策略

交互演示

改变属性和请求条件观察发送。模型不改变真实浏览器设置,不计为实战完成。

  1. 先预测一个条件变化的结果。
  2. 只改变一个条件,比较输入与输出。
  3. 将模型中的关系对应到真实 DevTools。

真实商城合同

症状:登录响应设置了 Cookie,后续 profile 仍未登录。

正常结果:当前 Cookie 随 account/profile 发出,authenticated=true。

真实机制:HttpOnly Cookie 的 Path 错误或 Max-Age=0;profile 核对真正 Cookie 请求头。

  1. 从本课准备并打开独立商城;先打开 DevTools,再运行故障。
  2. Application → Cookies 选实验源;检查本会话的名称、Path、Expires、HttpOnly。
  3. Network 查看 login 的 Set-Cookie,再看 account/profile 的 Request Cookies;不要只用 document.cookie 判断。
  4. 修复后 profile 的 authenticated=true;恢复只删除本会话 Cookie,不清理其他课程或真实账号。
  5. 先保存证据,再应用针对性的对照;错误对照不会通过页面检查。
  6. 回到教程选择真实证据,完成独立挑战后写下排查与恢复步骤。

独立挑战与参考答案

指出 Cookie 丢失环节并关联请求。新会话改变输入与故障配置,可能再次抽到同一类型;按实际证据判断。

配置 原因 证据 修复/验证
配置1 Cookie Path 没覆盖 account/profile Set-Cookie 的 Path 指向 unrelated,profile 没有该 Cookie 修正 Path 后重新登录并检查请求
配置2 Cookie 的 Max-Age 已过期 Set-Cookie 的 Max-Age=0,Cookie 已删除 设置正确有效期后重新登录并检查请求
干扰项 只凭界面颜色判断 没有对应请求或存储证据 同时改变全部条件且不复测

分级提示

  1. 先区分实际请求、浏览器策略、存储与界面处理,记录第一次偏离的环节。
  2. Application → Cookies 选实验源;检查本会话的名称、Path、Expires、HttpOnly。
  3. 比较两个候选解释:Cookie Path 没覆盖 account/profile;Cookie 的 Max-Age 已过期。保持其他输入一致再验证。

边界与恢复

只操作本会话 Cookie。端口不隔离 Cookie;完整第三方/SameSite/Secure 政策不在这两个故障中模拟。

清理与会话约定见 共同合同。请在复盘写下条件、观察对象、实际值、根因、最小修改与恢复设置;将 HTTP 缓存、Cache Storage、内存状态分开。

官方参考。实测范围见 验收记录。