2026/8/5
HTTP 就是"浏览器和服务器之间传话的规矩"。
你打开网页时,发生了这样一件事:
浏览器(客户端)向服务器发一个请求(Request),说"我要看 /student 这个页面"
服务器处理完,返回一个响应(Response),内容可能是网页、也可能是数据(JSON)
浏览器把内容渲染给你看
一次请求里包含:
方法:你想干什么。GET 表示"我要看",POST 表示"我要提交新东西"
地址(URL):你要找哪个资源,比如 /api/my/tasks
请求头(Headers):附加说明,比如"我是谁"(令牌就放在这里)
请求体(Body):要传给服务器的具体内容,比如登录时的用户名密码
服务器返回的响应里最关键的是状态码,它是服务器给你的"暗号":
状态码 含义 类比
200 成功 菜做好了
401 未登录/登录失效 你没带会员卡
403 没有权限 这张卡不能进这个包间
404 资源不存在 菜单上没有这道菜
500 服务器出错了 后厨着火了
所有 Web 开发、所有 AI 接口调用,本质都是发 HTTP 请求。
REST 接口(前后端怎么协作)
一句话:REST 是一种"把功能设计成网址"的规范。
后端不直接给你页面,而是给你一堆"接口"。每个接口 = 一个网址 + 一个动作:
动作 方法 网址 干什么
查 GET /api/classes 看我的班级列表
增 POST /api/classes 创建一个班级
删 DELETE /api/classes/{id}/students/{学生id} 把学生移出班级
提交 POST /api/tasks/{id}/submission 提交作文初稿
规则是:用 HTTP 方法表达"动作",用 URL 表达"东西",用状态码表达"结果"。返回的数据统一是 JSON(一种像字典的文本格式)。
"REST 和普通接口有什么区别?" 答:REST 只是接口设计的一种约定,让接口"见名知意"、动作清晰。不是所有接口都叫 REST,很多公司用简化版。
身份认证与安全
-
JWT 令牌:登录是怎么记住你的
问题起点:HTTP 是"无状态"的。 意思是:服务器不记得你。你第一次请求和第一百次请求,对它来说都是陌生人。
所以需要一个机制让它认出你:
你提交用户名密码 → 服务器验证通过
服务器发给你一个令牌(token),一串很长的加密字符串,里面写着你的用户 id 和过期时间
浏览器把它存进 localStorage(相当于你把它放进口袋)
之后每次请求,前端都会自动在请求头里带上它(Authorization: Bearer 令牌)
服务器用密钥(SECRET_KEY)验一下签名,就能确认"这令牌是我发的,没被改过",然后从里面读出你是谁
类比:令牌就是一张带防伪签名的通行证。 签名是服务器用只有自己知道的密钥做的,别人改一个字符,签名就对不上,作废。
面试常问:
"JWT 为什么安全?" 答:内容被签名保护,篡改必被发现。
"JWT 和 Session 有什么区别?" 答:JWT 存在客户端、服务器不存状态(无状态、适合前后端分离);Session 存在服务器内存(服务器要记住每个人)。
"令牌存 localStorage 有什么风险?" 答:localStorage 里的内容能被 JavaScript 读取,如果网站有 XSS 漏洞,令牌可能被偷走。所以令牌要设置过期时间,重要网站还会用更安全的 HttpOnly Cookie。 -
前端守卫 vs 后端守卫
我们在 app.js 里做的登录检查,叫路由守卫:没登录的人输入网址直接访问 /student,会被送回登录页。
"前端做鉴权够了吗?"
标准答案是:不够,前端守卫只是用户体验,真正的安全必须靠后端。 前端守卫相当于"大门口好看的门卫",你FQ照样能进;后端每个接口验令牌,才是"每间房都上锁"。所以我们的后端接口全部用了 Depends(get_current_user) 做校验,这个才是真安全。 -
XSS 跨站脚本攻击
一句话:别人输入的恶意代码,如果被当成代码执行,就是 XSS 攻击。
比如学生提交作文时写:。如果网站直接把这段文字"当作网页代码"渲染,这段脚本就会在别的用户浏览器里执行,可能偷走登录令牌。
解决:转义(escapeHtml)。 把 < 变成 <、> 变成 >。浏览器看到 < 只当它是普通文字,不会执行。我们在前端所有展示用户输入的地方都做了这个处理。
Web 安全"三兄弟":XSS(往页面里注入脚本)、CSRF(诱导你以自己身份发请求)、SQL 注入(往数据库查询里注入代码)。实习面试的必考基础。
第四块:软件工程习惯
统一错误处理:我们写了 api.js 这一个文件,所有接口请求都走它。它负责三件事:自动带令牌、统一检查状态码、登录失效自动跳转。好处是:
页面代码干净,不用每个页面重复写"怎么发请求"
改一处,全站生效
DRY 原则(Don't Repeat Yourself,不要重复自己)
浙公网安备 33010602011771号