🔌 第六章 请求到达Web服务器,响应返回浏览器
📄 一句话概括

浏览器拿到响应体,按 Content-Type 分派:text/html 渲染、image/jpeg 绘图、application/pdf 交给查看器——没有这个头浏览器只能靠猜。

📝 本节和前面几节的关系

响应回到浏览器手里;旅程最后一小段从【认出内容】开始。

一、Content-Type 是通行证

响应头里的 Content-Type 说明消息体是什么: text/html 渲染成页面、image/jpeg 画图、 application/pdf 交给 PDF 查看器……

二、认错的后果

没有这个头或标错,浏览器只能猜(看内容特征), 猜错就乱码或下载——所以它是 6.4.1 的主角。

三、动手 Demo:Content-Type 决定处理方式

浏览器拿到响应体,按类型分派:

for a, b in [('text/html','解析并渲染成页面'),
             ('image/jpeg','画进页面相应位置'),
             ('application/pdf','交给 PDF 查看器')]:
    print('%-18s %s' % (a, b))

实跑输出:

--------------------------------------------------------------------
Content-Type 决定处理方式
--------------------------------------------------------------------
  浏览器拿到响应体,按类型分派:

  Content-Type        浏览器怎么做
  -------------------------------------
  text/html           解析并渲染成页面
  image/jpeg          画进页面相应位置
  application/pdf     交给 PDF 查看器
  -------------------------------------

  没有这个头,浏览器只能靠猜——
  所以它是 6.4.1 的主角。

6.3.2 的 CGI 程序要自己写 Content-Type—— 忘写这一行是新手最常见的【乱码事故】。

30 秒实验

  1. 用开发者工具看一个页面的 Content-Type。
  2. 找一次【类型标错导致乱码】的经历复盘。
  3. 查查 text/plain 与 text/html 的区别。

常见误区

  1. 以为浏览器万能识别内容——主要靠 Content-Type。
  2. 以为 Content-Type 可有可无——丢了它全靠猜。
自测三问(点开对答案) 1. 说明响应体类型的头叫什么? —— Content-Type。 2. PDF 会怎么被处理? —— 交给外部查看器。 3. 没有这个头会怎样? —— 浏览器靠猜,易乱码。

相关笔记