前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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 秒速记

  • 灵活可扩展:报文格式简单,加个头字段就能加功能(缓存、认证、CORS 都是这么长出来的)
  • 能传任意数据:文本、图片、视频都行,靠 Content-Type 说明是什么
  • 可靠传输:HTTP/1.1、HTTP/2 跑在 TCP 上,HTTP/3 跑在 QUIC 上,「可靠」是指数据尽量完整有序送到,不是业务一定成功
  • 请求 - 应答:客户端问,服务器答,服务器不能凭空主动推
  • 无状态:每个请求互不相关,登录态靠 Cookie / Token 每次自己带上

HTTP 是一个简单、灵活、无状态的应用层协议,模式是客户端发请求、服务器回响应。 灵活体现在报文就是一行起始行加一堆头字段,想加功能就加头,Cache-Control、Authorization 都是这么来的;它也不挑内容,JSON、图片、视频都能传,用 Content-Type 告诉对方是什么。可靠是借了底层 TCP 的光,保证字节不丢不乱,但连接超时、服务器返回 500 照样会发生。最常被追问的是无状态:服务器不会记得你上一个请求是谁,所以登录后每个请求都得带上 Cookie 或 Token,状态是应用自己补的。

  • HTTP 是灵活可扩展的,可以任意添加头字段实现任意功能;
  • HTTP 是可靠传输协议,基于 TCP/IP 协议“尽量”保证数据的送达;
  • HTTP 是应用层协议,比 FTP、SSH 等更通用功能更多,能够传输任意数据;
  • HTTP 使用了请求 - 应答模式,客户端主动发起请求,服务器被动回复请求;
  • HTTP 本质上是无状态的,每个请求都是互相独立、毫无关联的,协议不要求客户端或服务器记录请求相关的信息

原理拆解: HTTP 规定应用层消息如何表达和交换,客户端先发送请求方法、目标、头字段及可选消息体,服务器再返回状态码、头字段和可选消息体。消息体可以承载文本、图片或结构化数据,其含义通常由 Content-Type 描述。新增头字段能够传递缓存、认证和内容协商等元数据,但通信双方不理解某个扩展字段时,不代表其对应功能一定生效。底层采用 TCP 时可获得有序、校验和重传能力,这仍不保证服务器必然处理成功。

最小验证: 输入为一个独立的资源请求,要验证请求—应答结构、内容类型表达和单次请求不依赖历史记录。

GET /api/profile?id=42 HTTP/1.1
Host: api.example
Accept: application/json
X-Trace-Id: 7f3a91
Connection: close

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 24
X-Trace-Id: 7f3a91

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

GET 和请求目标表达客户端意图,200 表达处理结果,Content-Type 说明响应体是 JSON,自定义 X-Trace-Id 展示头字段的扩展方式。预期服务端仅凭本次请求即可返回指定资料;若资源需要登录,本次请求还必须显式携带认证信息,不能假设服务器记得前一次请求。

边界与排查: “无状态”指协议不强制保存会话历史,不代表应用不能借助 Cookie、令牌或服务端会话构造状态。“可靠传输”也不等于业务成功:连接可能超时,服务器可能返回 500,响应还可能在客户端收到前中断。排查时应分层观察域名解析、连接建立、请求是否完整发出、响应状态码与消息体;只有传输完成且业务响应符合约定,才能判定一次调用成功。

面试官追问

追问 1登录成功后刷新个人中心又变成未登录,产品说 HTTP 应该记得我登录过,怎么解释?
参考回答

HTTP 本身不记事,每个请求都是陌生人。能「记住登录」全靠请求带凭证:要么服务端下发 Cookie、浏览器自动带,要么前端把 Token 存起来每次放进 Authorization。刷新后丢登录,一般是 Token 只放在内存里,或者 Cookie 的 Domain / Path 没覆盖到这个接口。

追问 2要给每个请求加链路追踪 ID,改协议流程还是加个头?
参考回答

加头就够了,比如 X-Trace-Id 或标准的 traceparent,这正是 HTTP 可扩展的用法。要确认网关、代理会透传这个头,有的代理会剥掉不认识的头,那追踪就断了。

追问 3有人说 HTTP 只能传文本,图片接口出错时没法返回 JSON,对吗?
参考回答

不对。HTTP 的 body 就是一串字节,传什么都行,关键是 Content-Type 要和内容对上:正常返回 image/png,出错返回 application/json 加 4xx 状态码,前端先看状态码再决定按图片还是 JSON 处理。

追问 4支付回调超时了,网络同学说走的是 TCP,请求肯定到了,订单肯定处理了,对吗?
参考回答

不对。TCP 只保证连接正常时字节完整有序,连接中途断了、服务器处理到一半崩了、响应回来时超时,这些它都兜不住。业务成功得看服务端的处理结果,回调场景一般靠对方重试加我方幂等去重来保证。

追问 5想让服务端在订单状态变化时主动通知前端,普通 HTTP 请求能做到吗?
参考回答

普通的一问一答做不到,服务器没收到请求就没法回。常见做法是轮询、SSE(服务器保持一个响应不结束,持续往里写事件)或者 WebSocket。只需要服务端单向推,SSE 最省事,它本身还是 HTTP。

基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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 秒速记

  • 灵活可扩展:报文格式简单,加个头字段就能加功能(缓存、认证、CORS 都是这么长出来的)
  • 能传任意数据:文本、图片、视频都行,靠 Content-Type 说明是什么
  • 可靠传输:HTTP/1.1、HTTP/2 跑在 TCP 上,HTTP/3 跑在 QUIC 上,「可靠」是指数据尽量完整有序送到,不是业务一定成功
  • 请求 - 应答:客户端问,服务器答,服务器不能凭空主动推
  • 无状态:每个请求互不相关,登录态靠 Cookie / Token 每次自己带上

HTTP 是一个简单、灵活、无状态的应用层协议,模式是客户端发请求、服务器回响应。 灵活体现在报文就是一行起始行加一堆头字段,想加功能就加头,Cache-Control、Authorization 都是这么来的;它也不挑内容,JSON、图片、视频都能传,用 Content-Type 告诉对方是什么。可靠是借了底层 TCP 的光,保证字节不丢不乱,但连接超时、服务器返回 500 照样会发生。最常被追问的是无状态:服务器不会记得你上一个请求是谁,所以登录后每个请求都得带上 Cookie 或 Token,状态是应用自己补的。

  • HTTP 是灵活可扩展的,可以任意添加头字段实现任意功能;
  • HTTP 是可靠传输协议,基于 TCP/IP 协议“尽量”保证数据的送达;
  • HTTP 是应用层协议,比 FTP、SSH 等更通用功能更多,能够传输任意数据;
  • HTTP 使用了请求 - 应答模式,客户端主动发起请求,服务器被动回复请求;
  • HTTP 本质上是无状态的,每个请求都是互相独立、毫无关联的,协议不要求客户端或服务器记录请求相关的信息

原理拆解: HTTP 规定应用层消息如何表达和交换,客户端先发送请求方法、目标、头字段及可选消息体,服务器再返回状态码、头字段和可选消息体。消息体可以承载文本、图片或结构化数据,其含义通常由 Content-Type 描述。新增头字段能够传递缓存、认证和内容协商等元数据,但通信双方不理解某个扩展字段时,不代表其对应功能一定生效。底层采用 TCP 时可获得有序、校验和重传能力,这仍不保证服务器必然处理成功。

最小验证: 输入为一个独立的资源请求,要验证请求—应答结构、内容类型表达和单次请求不依赖历史记录。

GET /api/profile?id=42 HTTP/1.1
Host: api.example
Accept: application/json
X-Trace-Id: 7f3a91
Connection: close

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 24
X-Trace-Id: 7f3a91

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

GET 和请求目标表达客户端意图,200 表达处理结果,Content-Type 说明响应体是 JSON,自定义 X-Trace-Id 展示头字段的扩展方式。预期服务端仅凭本次请求即可返回指定资料;若资源需要登录,本次请求还必须显式携带认证信息,不能假设服务器记得前一次请求。

边界与排查: “无状态”指协议不强制保存会话历史,不代表应用不能借助 Cookie、令牌或服务端会话构造状态。“可靠传输”也不等于业务成功:连接可能超时,服务器可能返回 500,响应还可能在客户端收到前中断。排查时应分层观察域名解析、连接建立、请求是否完整发出、响应状态码与消息体;只有传输完成且业务响应符合约定,才能判定一次调用成功。

面试官追问

追问 1登录成功后刷新个人中心又变成未登录,产品说 HTTP 应该记得我登录过,怎么解释?
参考回答

HTTP 本身不记事,每个请求都是陌生人。能「记住登录」全靠请求带凭证:要么服务端下发 Cookie、浏览器自动带,要么前端把 Token 存起来每次放进 Authorization。刷新后丢登录,一般是 Token 只放在内存里,或者 Cookie 的 Domain / Path 没覆盖到这个接口。

追问 2要给每个请求加链路追踪 ID,改协议流程还是加个头?
参考回答

加头就够了,比如 X-Trace-Id 或标准的 traceparent,这正是 HTTP 可扩展的用法。要确认网关、代理会透传这个头,有的代理会剥掉不认识的头,那追踪就断了。

追问 3有人说 HTTP 只能传文本,图片接口出错时没法返回 JSON,对吗?
参考回答

不对。HTTP 的 body 就是一串字节,传什么都行,关键是 Content-Type 要和内容对上:正常返回 image/png,出错返回 application/json 加 4xx 状态码,前端先看状态码再决定按图片还是 JSON 处理。

追问 4支付回调超时了,网络同学说走的是 TCP,请求肯定到了,订单肯定处理了,对吗?
参考回答

不对。TCP 只保证连接正常时字节完整有序,连接中途断了、服务器处理到一半崩了、响应回来时超时,这些它都兜不住。业务成功得看服务端的处理结果,回调场景一般靠对方重试加我方幂等去重来保证。

追问 5想让服务端在订单状态变化时主动通知前端,普通 HTTP 请求能做到吗?
参考回答

普通的一问一答做不到,服务器没收到请求就没法回。常见做法是轮询、SSE(服务器保持一个响应不结束,持续往里写事件)或者 WebSocket。只需要服务端单向推,SSE 最省事,它本身还是 HTTP。

← 响应状态码HTTP优缺点 →

fe