MIME小知识

mime

用户可以通过使用MIME以设置服务器传送多媒体如声音和动画信息,这一切可能通过CGI脚本来进行。在下面的文章中,你可以了解到一此关于MIME和关于在网络上使用MIME的知识。

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头是什么样子要看它是用在电子邮件中还是用在浏览器上,两者内容可能有所不同。对于邮件头来说,版本号,内容类型声明,编码方式,内容描述是必不可少的。这是用于邮件头中的格式,在下面,我们将重点说到在HTTP中传送MIME头,这时MIME头要简单一些。

下例是一个邮件的标准MIME头:

Mime-Version: 1.0 //版本号:1.0

Content-Type: multipart/mixed; boundary="IMA.Boundary.750407228" //内容类型是多种的

--IMA.Boundary.750407228

Content-Type: text/plain; charset=US-ASCII //内容类型:文本,字符是ASCII的

Content-Transfer-Encoding: 7bit //编码方式:7位

Content-Description: cc:Mail note part

在用于浏览器时,用户不需要知道那么多的信息,所以MIME头就比较简单了。在访问一个网页时,浏览器和服务器之间产生一个会话,作为请求内容的一部分,浏览器发送它能够理解的MIME类型的描述,这就告诉服务器,浏览器除了网页外还可以支持什么,服务器对这个信息一般不作为什么修改。

服务器通过发向客户机的MIME头通知客户浏览器内容是什么,我们看看下面这个头:

Content-type: text/html

在实现的时候,一定要注意MIME头后要跟一个空行,不然这个头会被浏览器忽略,这个头会被当作文本显示出来。当服务器传送GIF图象时,头会如下:

 

Content-type: image/gif

Content-transfer-encoding: BINARY

 

通常的MIME内容类型并不起什么作用,浏览器可以自己识别内容的类型,但是如果您使用一些另外的类型,这个问题可就大了,如果你使用了text/postscript,那浏览器会显示下载窗口,或就把这个东西显示出来,那可就不好办了。下面我们介绍一下标准MIME类型。

Text. 文本,它用于描述不同类型的文本,包括通常的文本,PostScript和HTML,虽然HTML不是一个可能的子类型。

Multipart. 多类型,指出此信息包括多种信息,不止一种类型。

Message. 用于标记不同类型的消息。

Application. 应用类型。

Image. 图象,用于标明图形文件。

Audio. 声音,用于标明声音文件。

Video. 影象,用于标明动画文件。

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

时间: 2024-08-03 20:11:03

MIME小知识的相关文章

运维小知识之nginx---nginx配置Jboss集群负载均衡

运维小知识之nginx---nginx配置Jboss集群负载均衡            背景          紧接着上一篇博客<运维小知识---CentOS6.5安装nginx配置nginx sticky>安装完成之后剩下的工作就是配置了,其实如果我们想要去做负载均衡session共享是一个绕不过去的问题,而解决session共享的方法有很多,我这里介绍的事使用nginx sticky,方便易用.            具体配置          由于目前的项目中会出现什么情况还不清楚,所以

说说XP系统快捷键的一些小知识

WinXP推出至今,已有十多年的历史,相信大家再熟悉不过,但是你真的对WinXP全部了解了吗?其实WinXP中还隐藏了许多不为人知的小秘密,不知道接下来要分享的这个热键小漏洞的知识你是否了解.不管你是否知道都一起来看看吧! WinXP的热键是用来启动一个程序或者使用一个程序的某项功能的一个键和一组键,一个键的可以包括F1,F2这些功能键,也可以是一些特制的键. 小知识:两个概念 1.热键 热键是用来启动一个程序或者使用一个程序的某项功能的一个键和一组键,一个键的可以包括F1,F2这些功能键,也可

《Wireshark网络分析的艺术》—三次握手的小知识

三次握手的小知识 Wireshark网络分析的艺术 我原本以为TCP三次握手不值得写,没想到在某技术社区上被提问好几次了.看来感兴趣的人还真不少,还是写一篇吧. 我们知道TCP需要通过三次握手来建立连接,过程如图1所示. 从Wireshark上看到的握手过程就是图2这样的,你可以把Seq号和Ack号代入图1中,看看是否符合规律. 当X和Y的值太大时,看起来就不太友好,尤其是需要对这些号码做加减运算时.于是Wireshark提供了一个功能--把Seq和Ack的初始值都置成0,即用"相对值"

虚拟主机-请教大神啊。关于一个小知识,但是百度都好渣啊

问题描述 请教大神啊.关于一个小知识,但是百度都好渣啊 请教大神啊.关于一个小知识,但是百度都好渣啊.请问hostname的密码要如何查看啊,百度都不到 解决方案 问你的虚拟主机运营商.不同的虚拟主机不同.

新人急求安卓数据传输小知识

问题描述 新人急求安卓数据传输小知识 怎么样在activity之见用bundle传递一个键值对,类似list>,或者怎么将传过来的数组创建成一个键值对,数组里的东西是动态的,要给他们加上一个name,后面好调用他们 解决方案 activity之间传值,可以传map,根据key取值 解决方案二: 中间那里没写完,是类似list> 解决方案三: 实质上是进行serializable数据的操作 解决方案四: 你加我qq我给你说 1119537659 intent传递数据量有限 你可以用全局变量

运维小知识之nginx---CentOS6.5安装nginx配置nginx sticky

运维小知识之nginx---CentOS6.5安装nginx配置nginx sticky            背景          今天经理在系统中使用nginx配置负载均衡,笔者想项目目前就一个服务器有必要吗?"以后会拓展的!",我能怎么办,反正在他眼里这些加上一个负载均衡又不花时间,这篇文章笔者主要是写如何在CentOS下安装nginx以及为了解决session共享问题而在nginx中添加的sticky.            一.安装准备            首先由于ngi

运维小知识---后台运行Jboss

运维小知识---后台运行Jboss            最近由于项目原因开始接触Linux,这两天项目注册测试,发现搭好的测试环境之后出了点小问题.                   问题描述          每次远程使用命令shstandalone.sh启动Jboss,发布好的网站能够正常访问,而当我关闭远程会话窗口的时候页面就无法访问了.          重现问题          使用SecureCRT登录Linux服务器使用命令进入Jboss下面的bin文件夹 cd /usr/l

运维小知识之nginx---..nginx-sticky-module-1.1ngx_http_sticky_misc.cIn function ‘ngx_http_sticky_misc_text_

运维小知识之nginx---..nginx-sticky-module-1.1ngx_http_sticky_misc.cIn function 'ngx_http_sticky_misc_text_raw            背景          今天笔者在使用nginx做负载均衡的过程中遇到了一个问题,如何解决session共享的问题,稍一查找发现解决办法不少,笔者使用的是nginx的一直扩展模块(安装和配置已经在前两篇博客有简单的介绍)在安装的过程中居然出现了问题,咱也不是逃避的人,解

Java Web十条开发实用小知识_java

 1.${ctx}与 ${pageContext.request.contextPath}这两个为一个意思,都是获取当前根目录. 不同的是${ctx}为${pageContext.request.contextPath}的简写版,经查证之后果真如此,发现在项目的一个文件内有这样一段话 的配置 复制代码 代码如下: <c:setvar="ctx"value="${pageContext.request.contextPath}"/> 注意在使用${ctx的