你真的在使用XHTML吗?(MIME类型/XHTML1.0与XHTML1.1区别)

MIME类型

当web浏览器向web服务器请求一个页面时,web服务器会在发送实际页面内容前,先发送一些头信息即header。那这些header有什么用呢?是用来帮助浏览器决定如何解析随后的实际页面内容的


其中最重要的头信息就是Content-Type(内容类型),比如:Content-Type: text/html。

“text/html”就是这个页面的“Content-Type”,也叫做“MIME类型”。


Content-Type作用:唯一确定某个资源本质上是什么,页因而决定了它该如何被浏览器呈现。

凡是在一个网页上能看到的东西,比如HTML、图片、脚本、视频、PDF文件,所有这些可以用一个URL地址定位的东西,都具有特定的MIME类型。

任何资源都有自己的MIME类型,不同的应用程序支持不同的MIME类型,整个web都依靠MIME类型运作。


举例:

图片文件的MIME类型:image/jpeg(JPEG图像)、image/png(PNG图像);

Javascript文件的MIME类型:application/x-javascript

CSS文件的MIME类型:text/css


不同资源对应的MIME类型详见:http://www.w3school.com.cn/media/media_mimeref.asp


你真的在使用XHTML吗?

XHTML 1.0:

一份只是简单用XML重新表达HTML,而不增加任何新的元素和属性的规范。它定义了一种用于表示XHTML文档的新的MIME类型“application/XHTML+xml”。然而,这个MIME类型不是强制的,规范的附录C(是个漏洞)说到“XHTML页面依然可以以“text/html”这个MIME类型来发布”,这样做是为了让XHTML文档也能在HTML用户代理下正确呈现。

XHTML 1.1:

在XHTML1.0的基础上增加了一些细小特性,不过消除了附录C漏洞。也就是说从XHTML1.1开始,所有的XHTML文档都必须以“application/XHTML+xml”的MIME类型发布。


到底“application/XHTML+xml”和“text/html”这2种MIME类型会带来什么不同呢?

“application/XHTML+xml”这个MIME类型的文档必须遵循严格的错误处理规定(德拉科式的错误处理),即如果XHTML页面上哪怕只有一个错误,web浏览器也别无选择,只能停止继续处理并给用户报错信息;

“text/html”这个MIME类型的文档则不用遵循严格的错误处理规定,,浏览器对HTML是宽容的。即使你忘记了在html页面中写上<title>,浏览器还是会正确显示页面,虽然<title>对于html页面来说是必须的。正因为格式错误的HTML仍然可以在浏览器中显示,所以导致开发者们写出了很多错误的页面。要修复这么错误代价太大,于是开发者们选择了基本忽略application/XHTML+xml”这个MIME类型,将页面代码的语法升级到了XHTML,但是还是用“text/html”的MIME类型发布。

这正是XHTML 1.0留下的漏洞:“使用XHTML的语法,但是页面以“text/html”的MIME类型发布”。导致页面并不会引发XML的德拉科式错误处理,而是被一个宽容的HTML解析器处理,悄无声息地忽略掉任何代码错误。所以很多网页声称是XHTML 1.0的,但只有很少数网页声称自己是XHTML 1.1(或者XHTML 2.0)的。

总结:除非你使用application/XHTML+xml”这个MIME类型来发布你的网页,否则你所谓的“XHTML”只是名义上的XML而已。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值