0.20 客户端与服务器:谁在请求,谁在响应
第〇篇「零基础预科」免费。这一篇明确网络通信两端的角色,以及一条极重要的安全分界线。
一、两种角色
- 客户端(Client):主动发起请求、使用服务的一方。浏览器是最典型的客户端,手机 App、命令行 curl 也可以是客户端;
- 服务器(Server):监听端口、接收请求、处理并返回响应的一方(如你的 OpenResty + 网站文件)。
这种"请求—响应"模式是 Web 的基本工作方式。
二、浏览器这个客户端做了什么
- 把 URL 解析、发起网络请求;
- 接收 HTML/CSS/JS 并渲染成你看到的页面;
- 执行 JavaScript(在你自己的电脑上);
- 保存和回传 Cookie、缓存;
- 处理表单、点击等交互。
三、关键安全分界线:代码在哪边跑
这是初学者必须建立的信任边界:
| 前端(客户端) | 后端(服务器) | |
|---|---|---|
| 运行位置 | 用户的浏览器/设备 | 远程服务器 |
| 用户能否查看/篡改 | 能(F12、改 JS、改请求) | 不能直接 |
| 适合放 | 展示、交互、体验性校验 | 真正的权限校验、密钥、数据库操作 |
结论:前端的一切对用户都是可见、可改的。
- 只在 JS 里判断"是否会员、是否管理员"毫无安全意义,因为别人能直接改;
- 真正的访问控制必须在服务器执行——这正是本网站付费内容由 OpenResty + Lua 在服务器端校验 Cookie、而不是靠前端隐藏的原因;
- 密钥、数据库连接串绝不能写进前端。
前端校验仍然要做,但目的是体验(即时提示、减少无效请求),安全校验在服务器再做一遍。
四、Cookie 与登录态
登录成功后,服务器用 Set-Cookie 让浏览器保存一个凭证;之后浏览器对同站请求自动带上这个 Cookie,服务器据此认出你。
- 这也是为什么"退出登录"要让服务器清除 Cookie;
- 在公用电脑上用完应主动退出。
五、本篇小结
- 客户端发起请求并展示(浏览器渲染、执行 JS),服务器处理并响应。
- Web 工作在"请求—响应"模式;Cookie 维持登录态。
- 前端代码用户可见可改,不能当安全边界;真正的校验、密钥、数据操作必须在服务器。
- 前端校验为体验,服务器校验为安全,二者都要。
下一篇 0.21 辨析三个常被混用的词:网页、网站、Web 应用。