content-type 用于定义用户的浏览器或相关设备如何显示将要加载的数据,或者如何处理将要加载的数据,此属性的值可以查看 MIME 类型。
MIME (Multipurpose Internet Mail Extensions,多用途互联网邮件扩展) 是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。
content-type 一般以下面的形式出现:
Content-Type: [type]/[subtype]; parameter
type 有下面的形式:
subtype 用于指定 type 的详细形式。“type/subtype”配对的集合和与此相关的参数。下面是最经常用到的一些 MIME 类型:
关于 content-type 的详细信息,请参考 HTML4.01 规范 6.7 Content types (MIME types) 中的内容。
关于 MIME 的详细信息,请参考 IETF 的 [RFC2045] 及 [RFC2046] 规范。
更多的 MIME 类型参见:http://www.utoronto.ca/webdocs/HTMLdocs/Book/Book-3ed/appb/mimetype.html。
在 IE6 IE7 IE8 中,若一个页面被打开时接收到的响应头的 content-type 为 text/plain,浏览器会尝试嗅探页面文件内实际内容来判断是否可能为一个 HTML 文档,若是则会以 text/html 的方式将页面作为 HTML 文档解释,而不是将其作为纯文本内容处理。
这将导致 content-type 为 text/plain 的页面在 IE6 IE7 IE8 中仍作为 text/html 去解释,导致代码以 HTML 被渲染,而不是预期的文本格式。
若由于设置不当,将一个 content-type 本应该为 text/html 的 HTML 页面误设置为 text/plain,且此页面仅在 IE6 IE7 IE8 中调试,则其他浏览器中均无法看到渲染后的页面,而是页面的源代码。
IE6 IE7 IE8 |
---|
创建一个 Web 服务器,如 Apache。在服务器上编写一段动态代码,如:ct_plain.php
<?php header('Content-Type: text/plain'); ?> <!DOCTYPE html>
<html> <head> </head> <body> <h1>This is a test page!</h1>
</body> </html>
PHP 的“header()”函数向客户端发送原始的 HTTP 报头,即通知浏览器这是一个纯文本(text/plain)类型。
这段代码在不同的浏览器环境中的表现:
IE6 IE7 IE8 | Firefox Chrome Safari Opera |
---|---|
This is a test page!
|
<!DOCTYPE html> <html> <head> </head> <body> <h1>This is a test page!</h1> </body> </html> |
可见:
建立一个 txt 文本文件,其中输入以下内容(实际 200 个 ASCII 字符,包含 TITLE 标签):plain.txt
0120123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789<title>将此文件配置到服务端,通过 IE 访问此远程文件可以得到被解析为 HTML 格式的文本。
对于 IE6 IE7 IE8 的嗅探机制还不止于此,实际测试证明,对于常用可识别的非视频、非音频的 content-type 类型,如:'application/octet-stream'、'application/x-shockwave-flash'、'image/jpeg'、'image/gif、‘image/png’ 类型中均会启用嗅探机制。此处就不再一一测试证明,有兴趣的读者可以自行运行测试样例 ct_test.php 观看结果。
这是由于 IE 浏览器的特有内容嗅探机制导致,故在不修改服务器端代码的情况下,无法通过常规办法解决此 IE 特性问题。更多关于此问题的资料参考官方信息:Internet Explorer 未按预期方式处理“Text/Plain”内容类型。
合理、正确地设置文档的 content-type 是最佳的解决方案,同时应避免在非 HTML 文件中出现可被 IE6 IE7 IE8 嗅探机制捕获的 HTML、BODY、HEAD、TITLE 标记书写格式。
操作系统版本: | Windows 7 Ultimate build 7600 |
---|---|
浏览器版本: |
IE6
IE7 IE8 Firefox 3.6 Chrome 5.0.342.2 dev Safari 4.0.4 Opera 10.50 |
测试页面: |
ct_plain.php
plain.txt ct_test.php |
本文更新时间: | 2010-08-02 |
content-type 文本 文档类型 plain html IE 内容嗅探