关于MIME的一些知识

来源:互联网 发布:Js compare()函数 编辑:程序博客网 时间:2024/05/10 21:27

MIME是一种技术规范,它原来是用于电子邮件的,现在也可以用于浏览器上,传送可以供浏览器识别的信息,关于MIME的知识并是十分难懂的,有一些基本的计算机概念就可以理解了,但如果要进一步使用,就必须注意内容。实际上,我们在上网的时候就已经接触到了MIME,只是浏览器和服务器在底层实现了。

MIME有时候被错误地理解为多媒体Internet邮件扩展(Multimedia Internet Mail Extensions),这是一个错误,但是MIME在网上经常用于多媒体应用程序,所以人们以为这是它是多媒体邮件扩展,而实际上它应该被称为多用途Internet邮件扩展(Multipurpose Internet Mail Extensions),这一点一定要注意,因为有时候内容里根本没有非文本成份。

MIME对于邮件系统的扩展是巨大的,因为在MIME出现以前,信件内容如果要包括声音和动画,就必须把它变为ASCII码或把二进制的信息变成可以传送的编码标准,而接收方必须经过解码才可以获得声音和图画信息。MIME提供了一种可以在邮件中附加多种不同编码文件的方法。这与原来的邮件是大大不同的。而现在MIME已经成为了HTTP协议标准的一个部分。

MIME是服务器通知客户机传送文件是什么类型的主要方法,客户机浏览器也通过MIME告诉服务器它的参数。在网上,如果接收到的文件没有MIME头,就默认它为HTML格式。但这样也不好,因为当MIME的包头是text/plain时,浏览器将直接显示而不关心它的什么字体,颜色之类的参数,这样显示出来的内容可不是很好看呀。

每个MIME类型有不同的子类型,实际上,您不可能单独使用类型而不使用子类型,只有一个例外,这就是"telnet"类型。IANA提供45种类型/子类型对支持。当然,标准是开放的,允许用户自定义自己的类型,用户自定义类型要以“X-”开始以示区别。在添加新的类型时,一定要注意,尽量使用已有的类型达到自己的目的。如果非要添加新的类型,一定要保证服务器一方支持这种类型,也要保证客户端也能够通过一些应用程序(如插件)来识别新类型。如果您的网站的访问者很广,不要轻易使用新类型,要么使用已有的类型,或者向IANA提出注册请求。

比较常见的MIME内容类型:

*/* 1.1 0x00
text/* 1.1 0x01
text/html 1.1 0x02
text/plain 1.1 0x03
text/x-hdml 1.1 0x04
text/x-ttml 1.1 0x05
text/x-vCalendar 1.1 0x06
text/x-vCard 1.1 0x07
text/vnd.wap.wml 1.1 0x08
text/vnd.wap.wmlscript 1.1 0x09
text/vnd.wap.wta-event 1.1 0x0A
multipart/* 1.1 0x0B
multipart/mixed 1.1 0x0C
multipart/form-data 1.1 0x0D
multipart/byterantes 1.1 0x0E
multipart/alternative 1.1 0x0F
application/* 1.1 0x10
application/java-vm 1.1 0x11
application/x-www-form-urlencoded 1.1 0x12
application/x-hdmlc 1.1 0x13
application/vnd.wap.wmlc 1.1 0x14
application/vnd.wap.wmlscriptc 1.1 0x15
application/vnd.wap.wta-eventc 1.1 0x16
application/vnd.wap.uaprof 1.1 0x17
application/vnd.wap.wtls-ca-certificate 1.1 0x18
application/vnd.wap.wtls-user-certificate 1.1 0x19
application/x-x509-ca-cert 1.1 0x1A
application/x-x509-user-cert 1.1 0x1B
image/* 1.1 0x1C
image/gif 1.1 0x1D
image/jpeg 1.1 0x1E
image/tiff 1.1 0x1F
image/png 1.1 0x20
image/vnd.wap.wbmp 1.1 0x21
application/vnd.wap.multipart.* 1.1 0x22
application/vnd.wap.multipart.mixed 1.1 0x23
application/vnd.wap.multipart.form-data 1.1 0x24
application/vnd.wap.multipart.byteranges 1.1 0x25
application/vnd.wap.multipart.alternative 1.1 0x26
application/xml 1.1 0x27
text/xml 1.1 0x28
application/vnd.wap.wbxml 1.1 0x29
application/x-x968-cross-cert 1.1 0x2A
application/x-x968-ca-cert 1.1 0x2B
application/x-x968-user-cert 1.1 0x2C
text/vnd.wap.si 1.1 0x2D
application/vnd.wap.sic 1.2 0x2E
text/vnd.wap.sl 1.2 0x2F
application/vnd.wap.slc 1.2 0x30
text/vnd.wap.co 1.2 0x31
application/vnd.wap.coc 1.2 0x32
application/vnd.wap.multipart.related 1.2 0x33
application/vnd.wap.sia 1.2 0x34
text/vnd.wap.connectivity-xml 1.3 0x35
application/vnd.wap.connectivity-wbxml 1.3 0x36
application/pkcs7-mime 1.4 0x37
application/vnd.wap.hashed-certificate 1.4 0x38
application/vnd.wap.signed-certificate 1.4 0x39
application/vnd.wap.cert-response 1.4 0x3A
application/xhtml+xml 1.4 0x3B
application/wml+xml 1.4 0x3C
text/css 1.4 0x3D
application/vnd.wap.mms-message 1.4 0x3E
application/vnd.wap.rollover-certificate 1.4 0x3F
application/vnd.wap.locc+wbxml 1.5 0x40
application/vnd.wap.loc+xml 1.5 0x41
application/vnd.syncml.dm+wbxml 1.5 0x42
application/vnd.syncml.dm+xml 1.5 0x43
application/vnd.syncml.notification 1.5 0x44
application/vnd.wap.xhtml+xml 1.5 0x45
application/vnd.wv.csp.cir 1.5 0x46
application/vnd.oma.dd+xml 1.5 0x47
application/vnd.oma.drm.message 1.5 0x48
application/vnd.oma.drm.content 1.5 0x49
application/vnd.oma.drm.rights+xml 1.5 0x4A
application/vnd.oma.drm.rights+wbxml 1.5 0x4B

由于MIME定义了多种不同的内容类型,因此在邮件客户端可以识别这些标准的内容说明,从而调用不同的程序插件来进行处理,如为应用,则提示下载,如为图象,则自动打开(如OE),但由于BASE64编码的内容看起来是一样的,所以我们就可以把一个自己编写的执行程序或木马通过BASE64编码后,附加在邮件后,并强制定义其为图形或声音等能被自动处理的内容说明,这样,在邮件被打开时,这些编码就会被自动的处理,也就是相当于运行了这些编码解码后的程序。

 

转自Jrive的专栏http://blog.csdn.net/zhaojiangwei102/