前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
  • HTTP

    • 基础篇

      • HTTP的前世今生
      • HTTP是什么
      • HTTP世界全览
      • HTTP分层
      • 键入网址到回车发生什么
      • HTTP报文是什么样子的
      • 理解请求方法
      • URI
      • 响应状态码
      • HTTP有哪些特点
      • HTTP优缺点
      • HTTP的实体数据
      • HTTP传输大文件
      • HTTP的连接管理
      • HTTP的重定向
      • HTTP的Cookie机制
      • HTTP的缓存控制
      • HTTP的代理服务
      • HTTP的缓存代理
    • 高级篇

    • 扩展篇

  • 浏览器相关

  • 计算机基础

# HTTP优缺点

30 秒速记

  • 优点:简单、灵活、易扩展,软硬件生态成熟(浏览器、Nginx、CDN 全支持)
  • 无状态是双刃剑:服务器不存会话 → 加机器就能扛量;但登录这类连续状态要靠 Cookie / Token 补
  • 明文:抓包一眼看懂,方便调试,也方便被窃听
  • 不安全:不验证对方身份、不防篡改 → 公网一律上 HTTPS
  • 性能:HTTP/1.1 有队头阻塞、头部冗余,HTTP/2 多路复用 + 头部压缩,HTTP/3 换 QUIC 解决 TCP 层的阻塞

HTTP 的长处是简单灵活、生态成熟,短处集中在安全和性能上。 无状态让服务端特别好扩容,请求打到哪台机器都能处理,代价是登录态要用 Cookie、Token 或者集中存储的 Session 自己补。明文传输对调试很友好,Charles 一抓全看得懂,可在公共网络上就等于裸奔:谁都能看、能改,也没法确认对面真是你要连的服务器,这三件事都要靠 HTTPS 解决。性能问题要分版本说,HTTP/1.1 一条连接同一时间只能处理一个请求,后面的得排队,HTTP/2、HTTP/3 主要就是来解决这个的。

  • HTTP 最大的优点是简单、灵活和易于扩展;
  • HTTP 拥有成熟的软硬件环境,应用的非常广泛,是互联网的基础设施;
  • HTTP 是无状态的,可以轻松实现集群化,扩展性能,但有时也需要用 Cookie 技术来实现“有状态”;
  • HTTP 是明文传输,数据完全肉眼可见,能够方便地研究分析,但也容易被窃听;
  • HTTP 是不安全的,无法验证通信双方的身份,也不能判断报文是否被窜改;
  • HTTP 的性能不算差,但不完全适应现在的互联网,还有很大的提升空间

原理拆解: HTTP 规定报文语义和通信规则,不强制业务如何保存状态。请求通常携带方法、目标、首部和可选正文,响应返回状态码、首部和正文,因此客户端、代理、缓存与服务器可以独立演进。无状态表示服务器不必依赖前一次请求才能解释当前请求;它降低了节点替换和负载均衡的成本,但登录态、购物车等连续上下文仍需由 Cookie、令牌或服务端会话补齐。

最小验证: 输入以下两组报文,验证基础 HTTP 的请求相互独立,身份连续性来自显式携带的状态,而不是协议自动记忆。

GET /profile HTTP/1.1
Host: example.com
Connection: close

HTTP/1.1 401 Unauthorized
Set-Cookie: sid=a8f31; Path=/; HttpOnly
Content-Length: 0

GET /profile HTTP/1.1
Host: example.com
Cookie: sid=a8f31
Connection: close

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 16

{"name":"Alice"}
@前端进阶之旅: 代码已经复制到剪贴板

关键行是第二次请求中的 Cookie:缺少它时,同一路径仍可能返回 401;携带它后,服务器才有依据关联会话。报文可读也说明明文链路容易调试,但若直接经过不可信网络,路径、首部和正文都可能被观察或修改。

边界与排查: “无状态”不等于服务器不能保存数据,而是单个请求应包含完成处理所需的信息;粘性会话只是部署策略,并非 HTTP 的必然要求。性能也不能脱离版本讨论:HTTP/1.1 常受连接和队头等待影响,后续版本通过多路复用、头部压缩等机制改善传输。工程验证可在浏览器 Network 面板或抓包工具中核对协议版本、连接复用、缓存首部和耗时;涉及公网敏感数据时应检查是否使用 HTTPS,不能把“看不懂正文”误当成身份认证或完整性保护。

面试官追问

追问 1服务扩到 20 台后,有人说 HTTP 无状态所以必须把 Session 全删掉,对吗?
参考回答

不对。无状态说的是协议不替你记会话,不是禁止服务端存。Session 照样能用,只是要放到 Redis 这类共享存储里,别存在单台机器内存,否则请求换一台机器就丢登录。

追问 2第一次请求返回 Set-Cookie: sid=...,第二次还是 401,先查什么?
参考回答

先看第二次请求头里有没有真的带上 Cookie。常见原因是跨域请求没开 credentials: 'include',或者 Cookie 设置了 Secure 却在 HTTP 下访问、SameSite 拦掉了。服务端有会话没用,请求不带上就对不上号。

追问 3测试说正文不放密码,公网继续用 HTTP 方便抓包,可以吗?
参考回答

不行。明文链路上路径、Cookie、Token 全都看得见,运营商还能往页面里插广告脚本。调试问题用 Charles、Whistle 装证书照样能看 HTTPS,不需要为了抓包牺牲线上安全。

追问 4上了 HTTPS 抓包看不到正文了,是不是登录鉴权也就安全了?
参考回答

两回事。HTTPS 解决的是传输过程不被偷看、不被篡改、对端身份可信,管不了你接口有没有越权。用户改个 userId 就能看别人数据,HTTPS 照样拦不住,鉴权得服务端自己做。

追问 5有人说 HTTP 太慢要整体淘汰,你怎么看?
参考回答

先问是哪个版本慢。HTTP/1.1 的队头阻塞、每个请求重复发一大堆头确实是问题,但 HTTP/2 一条连接并发多个请求、压缩头部,HTTP/3 换成 QUIC 连 TCP 层的阻塞也解决了。多数站点开个 HTTP/2 就能缓解,谈不上淘汰。

基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
  • HTTP

    • 基础篇

      • HTTP的前世今生
      • HTTP是什么
      • HTTP世界全览
      • HTTP分层
      • 键入网址到回车发生什么
      • HTTP报文是什么样子的
      • 理解请求方法
      • URI
      • 响应状态码
      • HTTP有哪些特点
      • HTTP优缺点
      • HTTP的实体数据
      • HTTP传输大文件
      • HTTP的连接管理
      • HTTP的重定向
      • HTTP的Cookie机制
      • HTTP的缓存控制
      • HTTP的代理服务
      • HTTP的缓存代理
    • 高级篇

    • 扩展篇

  • 浏览器相关

  • 计算机基础

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

HTTP优缺点|HTTP协议篇

# HTTP优缺点

30 秒速记

  • 优点:简单、灵活、易扩展,软硬件生态成熟(浏览器、Nginx、CDN 全支持)
  • 无状态是双刃剑:服务器不存会话 → 加机器就能扛量;但登录这类连续状态要靠 Cookie / Token 补
  • 明文:抓包一眼看懂,方便调试,也方便被窃听
  • 不安全:不验证对方身份、不防篡改 → 公网一律上 HTTPS
  • 性能:HTTP/1.1 有队头阻塞、头部冗余,HTTP/2 多路复用 + 头部压缩,HTTP/3 换 QUIC 解决 TCP 层的阻塞

HTTP 的长处是简单灵活、生态成熟,短处集中在安全和性能上。 无状态让服务端特别好扩容,请求打到哪台机器都能处理,代价是登录态要用 Cookie、Token 或者集中存储的 Session 自己补。明文传输对调试很友好,Charles 一抓全看得懂,可在公共网络上就等于裸奔:谁都能看、能改,也没法确认对面真是你要连的服务器,这三件事都要靠 HTTPS 解决。性能问题要分版本说,HTTP/1.1 一条连接同一时间只能处理一个请求,后面的得排队,HTTP/2、HTTP/3 主要就是来解决这个的。

  • HTTP 最大的优点是简单、灵活和易于扩展;
  • HTTP 拥有成熟的软硬件环境,应用的非常广泛,是互联网的基础设施;
  • HTTP 是无状态的,可以轻松实现集群化,扩展性能,但有时也需要用 Cookie 技术来实现“有状态”;
  • HTTP 是明文传输,数据完全肉眼可见,能够方便地研究分析,但也容易被窃听;
  • HTTP 是不安全的,无法验证通信双方的身份,也不能判断报文是否被窜改;
  • HTTP 的性能不算差,但不完全适应现在的互联网,还有很大的提升空间

原理拆解: HTTP 规定报文语义和通信规则,不强制业务如何保存状态。请求通常携带方法、目标、首部和可选正文,响应返回状态码、首部和正文,因此客户端、代理、缓存与服务器可以独立演进。无状态表示服务器不必依赖前一次请求才能解释当前请求;它降低了节点替换和负载均衡的成本,但登录态、购物车等连续上下文仍需由 Cookie、令牌或服务端会话补齐。

最小验证: 输入以下两组报文,验证基础 HTTP 的请求相互独立,身份连续性来自显式携带的状态,而不是协议自动记忆。

GET /profile HTTP/1.1
Host: example.com
Connection: close

HTTP/1.1 401 Unauthorized
Set-Cookie: sid=a8f31; Path=/; HttpOnly
Content-Length: 0

GET /profile HTTP/1.1
Host: example.com
Cookie: sid=a8f31
Connection: close

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 16

{"name":"Alice"}
@前端进阶之旅: 代码已经复制到剪贴板

关键行是第二次请求中的 Cookie:缺少它时,同一路径仍可能返回 401;携带它后,服务器才有依据关联会话。报文可读也说明明文链路容易调试,但若直接经过不可信网络,路径、首部和正文都可能被观察或修改。

边界与排查: “无状态”不等于服务器不能保存数据,而是单个请求应包含完成处理所需的信息;粘性会话只是部署策略,并非 HTTP 的必然要求。性能也不能脱离版本讨论:HTTP/1.1 常受连接和队头等待影响,后续版本通过多路复用、头部压缩等机制改善传输。工程验证可在浏览器 Network 面板或抓包工具中核对协议版本、连接复用、缓存首部和耗时;涉及公网敏感数据时应检查是否使用 HTTPS,不能把“看不懂正文”误当成身份认证或完整性保护。

面试官追问

追问 1服务扩到 20 台后,有人说 HTTP 无状态所以必须把 Session 全删掉,对吗?
参考回答

不对。无状态说的是协议不替你记会话,不是禁止服务端存。Session 照样能用,只是要放到 Redis 这类共享存储里,别存在单台机器内存,否则请求换一台机器就丢登录。

追问 2第一次请求返回 Set-Cookie: sid=...,第二次还是 401,先查什么?
参考回答

先看第二次请求头里有没有真的带上 Cookie。常见原因是跨域请求没开 credentials: 'include',或者 Cookie 设置了 Secure 却在 HTTP 下访问、SameSite 拦掉了。服务端有会话没用,请求不带上就对不上号。

追问 3测试说正文不放密码,公网继续用 HTTP 方便抓包,可以吗?
参考回答

不行。明文链路上路径、Cookie、Token 全都看得见,运营商还能往页面里插广告脚本。调试问题用 Charles、Whistle 装证书照样能看 HTTPS,不需要为了抓包牺牲线上安全。

追问 4上了 HTTPS 抓包看不到正文了,是不是登录鉴权也就安全了?
参考回答

两回事。HTTPS 解决的是传输过程不被偷看、不被篡改、对端身份可信,管不了你接口有没有越权。用户改个 userId 就能看别人数据,HTTPS 照样拦不住,鉴权得服务端自己做。

追问 5有人说 HTTP 太慢要整体淘汰,你怎么看?
参考回答

先问是哪个版本慢。HTTP/1.1 的队头阻塞、每个请求重复发一大堆头确实是问题,但 HTTP/2 一条连接并发多个请求、压缩头部,HTTP/3 换成 QUIC 连 TCP 层的阻塞也解决了。多数站点开个 HTTP/2 就能缓解,谈不上淘汰。

← HTTP有哪些特点HTTP的实体数据 →

fe