MIME 类型
关于读音
为了防止大家出去丢人,我先示范一下,MIME应该独坐[maim],听起来就好像“男人”的英语法人一样。
浏览器和MIME的关系
浏览器依靠MIME类型解释网页。
每当浏览器请求一个web页面时,web服务器会在发送实际内容之前,先发送一些头信息(Header)。
Content_Type就是所谓的MIME类型。这个类型是web服务器返回的,它标识了这个页面内容类型,表示这是html文本,当实际内容从服务器返回来之后,浏览器就会根据这个MIME类型调用相应的模块进行处理。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。下面是常用文件后缀和MIME类型对应关系
常见的MIME类型
超文本标记语言文本 .html text/html
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
GIF图形 .gif image/gif
JPEG图形 .ipeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
不同的文件类型的MIME类型不一样,如css文件和js文件的MIME类型分别为text/css和application/x-javascript。浏览器就是根据这些MIME类型来调用自身不同的模块来处理不同的文件的,比如负责css解释的模块将css样式应用到html上,负责处理图片的模块将图片显示到页面上。这样我们才看到了一个个精彩的网页。
由于MIME类型与文档的后缀相关,因此服务器使用文档的后缀来区分不同文件的MIME类型,服务器中必须定义文档后缀 和MIME类型之间的对应关系。
有些类型的MIME文件,打开的时候,即会自动下载该文件,这也是浏览器识别MIME类型的结果。
留个问题
有在返回的头信息中没有Content-Type属性的情况,那么浏览器会根据文件后缀判断文件类型吗?
MIME和ajax请求
请求有发送请求和接收请求两部分。
发送请求中设置content-type
目的是设置要发送给服务器数据的格式:
1.发送json格式数据: xhr.setRequestHeader("Content-type","application/json; charset=utf-8");1 2.发送表单数据: xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");1 3.发送纯文本(默认值): xhr.setRequestHeader("Content-type", "text/plain; charset=utf-8");1 4.发送html文本: xhr.setRequestHeader("Content-type", "text/html; charset=utf-8");1 5.编码可带可不带: // 不带字符编码写法 xhr.setRequestHeader("Content-type", "application/json");12 6.值对大小写不敏感: xhr.setRequestHeader("Content-type","Application/JSON; charset=utf-8");
响应中的content-type作用,上文中提到是浏览器解析返回数据的一句
AJAX overrideMimeType作用
我们经常在AJAX代码中发现如下代码:
if (http_request.overrideMimeType) {
http_request.overrideMimeType("text/xml");
}
其作用是:重写由服务器返回的MIME type,针对某些特定版本的mozillar浏览器的BUG进行修正
注意,这个方法必须在send()之前被调用。
具体来说:
如果来自服务器的响应没有 XML mime-type 头部,则一些版本的 Mozilla 浏览器不能正常运行。
对于这种情况,httpRequest.overrideMimeType('text/xml'); 语句将覆盖发送给服务器的头部,强制 将text/xml 作为 mime-type。
附上常见的content-type类型
常见的媒体格式类型如下:
- text/html : HTML格式
- text/plain :纯文本格式
- text/xml : XML格式
- image/gif :gif图片格式
- image/jpeg :jpg图片格式
- image/png:png图片格式
以application开头的媒体格式类型:
- application/xhtml+xml :XHTML格式
- application/xml : XML数据格式
- application/atom+xml :Atom XML聚合格式
- application/json : JSON数据格式
- application/pdf :pdf格式
- application/msword : Word文档格式
- application/octet-stream : 二进制流数据(如常见的文件下载)
- application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为 key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:
- multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
以上就是我们在日常的开发中,经常会用到的若干content-type的内容格式。