MIME Type 引出的两难困境

2016-01-29 11:53 6 1 收藏

MIME Type 引出的两难困境,MIME Type 引出的两难困境

【 tulaoshi.com - Html 】

     一切从一个糟糕的浏览器开始,它完全不支持 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 对于内容提供者也有好处,此处先不展开,详见下文。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/html/)  MIME Type 与之又有什么关系?

  把前两节的内容合起来,你显然可以发现:一个正常支持 XHTML 的浏览器会根据服务器提供的 MIME Type 是 text/html 还是 application/xhtml+xml 来区分获取到的内容是 HTML 还是 XHTML,对这两种格式,分别以两种不同的方式来解析文档,后者解析起来要严格得多,但对于用户代理开发者和内容提供者都有很大的好处。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/html/)

  那么,那些浏览器正常的支持了 XHTML 呢?答案是 Mozilla、基于 Mozilla 的浏览器如 Netscape 7 和 Firefox、较新版本的 Opera 和 Safari 等等。但不包括 Microsoft Internet Explorer。问题是,这一“不包括”,就除掉了大约 90% 的浏览器市场啊,在我们抓狂以前,先来看看 IE 是什么处理 application/xhtml+xml 的:IE 不认得这种 MIME Type,它要么提示你是否下载那个文件,要么就把文件内容当作纯文本显示出来,反正是不可能正O允颈昙恰?/P

  这正是造成我们不得不给 XHTML 文档标以 text/html 的原因 1实际上,目前 Web 上 95% 的 XHTML,都是扮成 HTML 的 XHTML (包括 w3.org),浏览器 (包括我们引以为傲的 Mozilla) 压根没有用 XML 解析器去解析那些 XHTML,而是沿用处理标签汤的老办法。

  这个时候你会问了,在我看起来,老办法显示得很好啊,干吗为此感到头疼呢?问题正是出在“看起来”这个词上,实际上,一些细微但

来源:https://www.tulaoshi.com/n/20160129/1483727.html

延伸阅读
僵尸困境 视频攻略解说 更多相关内容请关注:僵尸困境专区 僵尸困境 娱乐视频流程 更多相关内容请关注:僵尸困境专区 僵尸困境 视频攻略:第一关 ...
标签: Web开发
利用空闲几天把《JavaScript权威指南》安静的读了一篇。真是一本好书呀!呵呵,这句话见的太多了。好在什么地方呢?听我慢慢道来。 从开始接触JS这东西有一年时间了,心头总是有一些说不出来的苦闷。在论坛里也常常有人这么说。那么苦在何处呢?总是感觉学的不深入,一些简单的东西可以做但也是不能得心应手。能不能把这种苦再说的具体点儿...
    这一段CSS代码相当简单,目的就是想用CSS来控制某段文字的显示与隐藏。起初我采用了下面的代码,令人不可思议的是,它们在我的6.0上居然没有任何反应,大家不信可以亲自试验一下。 <style type="text/css" a {font-size:12px; text-decoration:none; height:50;} a:hover {text-decoration:none;} a span {fo...
标签: PHP
  作者:Kartic Krishnamurthy 译者:limodou 已经厌倦了给你的朋友和客户发送那些单调乏味的文本通知和信件了吗?曾经考虑过发送附件或在邮中 嵌入HTML吧。 答案就是MIME。接下来的几页解释了MIME的基础知识,创建符合MIME的信息,然后用一个可以工作的PHP 类结束,这个类实现了发送符合MIME邮件。注意对调用脚本,调用者等...
标签: Web开发
语法: layout-grid-type : loose | strict | fixed 取值: loose :? 默认值。指定在中文或韩文中使用网格的文本,只有象形文字,假名,宽字符域网格对齐。其余的和通常一样,尽管包含这些字符的文本范围的 layout-grid-mode 被设置为 none 或 line 。该模式还禁用通常用于对象文本的特殊文本对齐和字符宽度调整。最后,如果不能再换...

经验教程

266

收藏

42
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部