MIME Type 引出的两难困境

时间:2011-06-14 09:45:41 

一切从一个糟糕的浏览器开始,它完全不支持 XHTML。

  什么是 MIME Type?

为什么这么说呢?首先,我们要了解浏览器是如何处理内容的。在浏览器中显示的内容有 HTML、有 XML、有 GIF、还有 Flash……那么,浏览器是如何区分它们,绝对什么内容用什么形式来显示呢?答案是 MIME Type,也就是该资源的媒体类型。

媒体类型通常是通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的,例如:

Content-Type: text/html

表示内容是 text/html 类型,也就是超文本文件。为什么是“text/html”而不是“html/text”或者别的什么?MIME Type 不是个人指定的,是经过 ietf 组织协商,以 RFC 的形式作为建议的标准发布在网上的,大多数的 Web 服务器和用户代理都会支持这个规范 (顺便说一句,Email 附件的类型也是通过 MIME Type 指定的)。

通常只有一些在互联网上获得广泛应用的格式才会获得一个 MIME Type,如果是某个客户端自己定义的格式,一般只能以 application/x- 开头。

XHTML 正是一个获得广泛应用的格式,因此,在 RFC 3236 中,说明了 XHTML 格式文件的 MIME Type 应该是 application/xhtml+xml

当然,处理本地的文件,在没有人告诉浏览器某个文件的 MIME Type 的情况下,浏览器也会做一些默认的处理,这可能和你在操作系统中给文件配置的 MIME Type 有关。比如在 Windows 下,打开注册表的“HKEY_LOCAL_MACHINESOFTWAREClassesMIMEDatabaseContent Type”主键,你可以看到所有 MIME Type 的配置信息。

  浏览器处理 XHTML 和 HTML 有什么区别?

HTML 的语法过于随意了,有许多简写,标记不匹配的复杂情况,同时长期 Web 发展下来积累下来了许多错误的用法——比如一个文档里完全没有 标记——但浏览器还是得支持它,可想而知,为了支持这些“Tag Soup”——也就是我们所说的那些,乱成一锅粥的标签——浏览器要很费力地去猜测一段标记的意思,努力以用户期望的形式表达出来。一句话说,虽然 HTML 4.01 允许你用语义化、结构化的、内容与表现分离的方法来书写标记,但由于它沿袭了 HTML 这种格式,使得浏览器对于凡是 MIME Type 为“text/html”的文件,都得采用一种非常费劲的方法去处理,这对于 Web 的发展是很不利的。

再说除了浏览器,还有许多其他的用户代理要阅读 HTML:纯文本的浏览工具、读屏器等等。

创造 XHTML,很大一部分原因正是要通过 XML 重新严格地规范一遍标记,让这些用户代理可以以一种更简便的方式来解析这些标记。因此,XHTML 这种新的格式,天生就要求内容的发布者必须以严格的方式来标记自己的文档。

当然,XHTML 对于内容提供者也有好处,此处先不展开,详见下文。

标签:mime,xhtml
0
投稿

猜你喜欢

  • PHP容易被忽略而出错陷阱 数字与字符串比较

    2024-05-11 10:10:08
  • PyTorch模型保存与加载实例详解

    2022-02-24 20:08:56
  • ubuntu定时执行python脚本实例代码

    2022-11-30 17:35:03
  • pyEcharts安装及详细使用指南(最新)

    2022-01-30 04:14:21
  • Golang截取字符串方法示例讲解及对比

    2024-05-09 14:57:29
  • python matplotlib实现将图例放在图外

    2021-11-19 06:55:45
  • python实现由数组生成对称矩阵

    2022-12-09 15:01:53
  • SQLSERVER数据库中的5173错误解决方法

    2024-01-23 16:25:58
  • Django app配置多个数据库代码实例

    2023-06-11 09:11:25
  • 解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题

    2023-11-08 21:32:55
  • 分类与类型的问题

    2008-09-12 13:10:00
  • vue如何使用formData传递文件类型的数据

    2024-04-30 10:33:24
  • MySQL OOM 系列三 摆脱MySQL被Kill的厄运

    2024-01-13 19:14:40
  • [译]“我心中的ebay”

    2008-06-04 12:09:00
  • Pandas 多进程处理数据提高速度

    2021-12-11 17:30:51
  • Python爬虫实战之网易云音乐加密解析附源码

    2022-08-28 04:03:58
  • Vue中的 DOM与Diff详情

    2023-07-02 16:32:37
  • 在select语句中使用top的一些小技巧

    2009-03-12 12:21:00
  • SqlServer将查询结果转换为XML和JSON

    2024-01-18 20:25:59
  • jsp自定义标签之ifelse与遍历自定义标签示例

    2023-06-25 21:09:34
  • asp之家 网络编程 m.aspxhome.com