http协议对mime类型有详细描述,multipart/....是单个消息头包含多个消息体的解决方案。multipart媒体类型对发送非文本的各媒体类型是有用的。目前常用的有这些subtype:
Messages with multiple parts |
|
|
multipart/mixed |
Messages with multiple, alternative parts |
|
|
multipart/alternative |
Message with multiple, related parts |
|
|
multipart/related |
Multiple parts are digests |
|
|
multipart/digest |
For reporting of email status (admin.) |
|
|
multipart/report |
Order of parts does not matter |
|
|
multipart/parallel |
Macintosh file data |
|
|
multipart/appledouble |
Aggregate messages; descriptor as header |
|
|
multipart/header-set |
Container for voice-mail |
|
|
multipart/voice-message |
HTML FORM data (see Ch. 9 and App. B) |
|
|
multipart/form-data |
Infinite multiparts - See Chapter 9 (Netscape)
|
|
|
multipart/x-mixed-replace |
任何一种执行时无法识别的multipart子类型都被视为子类型"mixed"。multipart媒体类型有共同的格式,一般是这样:
Content-Type: multipart/mixed; boundary=xxxxx
--xxxxx
body
--xxxxx--
body还可以套body,可以参考前面的文章。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MHTML,即MIME HTML,是由RFC 2557定义的,把一个多附件(如图片,flash动画等)的网页内容都保存到单一档案的标准。这个标准由微软提出,并从IE 5.0对其开始支持。同时,微软实现了MHTML协议,默认安装的window系统都带有MHTML协议处理程序(MHTML Protocol Handler)。在IE中,当嵌入资源的URL的协议为MHTML 时,IE将调用MHTML Protocol Handler,把该资源当作MHTML格式文件解析处理。
MHTML文件由于是 "多合一" ,所以使用multipart的格式。
MHTML Protocol Handler 对MHTML文件有如下“温和”之处:
1. MHTML Protocol Handler会忽略远程文件后缀;
2. MHTML Protocol Handler会忽略远程文件中Content-Type前面的除“空行”外的所有内容,若有“空行”,则MHTML Protocol Handler不能解释该文件;
3. MHTML Protocol Handler会忽略远程文件中“--_boundary_by_mere—”后的所有无关内容;
4. MHTML Protocol Handler会忽略远程服务器的Content-Disposition、X-Frame-Options等响应头。
协议访问格式:mhtml: [Mhtml_File_Url]![Original_Resource_Url]
[Original_Resource_Url]从消息体的Content-Location处获得。如果[Original_Resource_Url] 不能从[Mhtml_File_Url]中获取,IE就会尝试下载[Original_Resource_Url]和返回下载内容。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
multipart/related自然是multipart_subtype其中一种,例如demo.html:
Content-Type: multipart/related; boundary="_boundary_by_mere"
--_boundary_by_mere
Content-Location:demo
Content-Transfer-Encoding:base64
PGh0bWw+PGJvZHk+TUhUTUwgREVNTyE8L2JvZHk+PC9odG1sPg==
--_boundary_by_mere--
若使用mhtml协议,访问 mhtml:demo.html!demo 即可访问文件的demo数据块。
参考文章:IE下MHTML协议带来的跨域危害,d4rkwind
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
HTTP协议和MIME协议是两个概念。多用途网际邮件扩充协议(MIME)是 Multipurpose Internet Mail Extensions 的缩写。
multipart类型,是MIME邮件的精髓。邮件体被分为多个段,每个段又包含段头和段体两部分,这两部分之间也以空行分隔。常见的multipart类型有三种:multipart/mixed, multipart/related和multipart/alternative。如果在邮件中要添加附件,必须定义multipart/mixed段;如果存在内嵌资源,至少要定义multipart/related段;如果纯文本与超文本共存,至少要定义multipart/alternative段。
什么是“至少”?举个例子说,如果只有纯文本与超文本正文,那么在邮件头中将类型扩大化,定义为multipart/related,甚至multipart/mixed,都是允许的。
1.http协议的主体信息部分是使用html来包装的,http协议刚开始是用来传送html的,只是和MIME协议结合才可以传送别的格式数据。
2.http与MIME应该分别是两个此协议,MIME可以附属在其他许多协议上,例如SMTP协议,利用MIME协议可以在协议中包含特殊格式的信息文本.例如:在http协议中包含pdf格式的数据,可以在浏览器中打开,在邮件中可以利用MIME协议来包含pdf附件,其余其他可以包含MIME数据的协议,我就不清楚了,我想,这应该可以有很多,因为从原理上说,这仅仅是按一定格式包含一段特殊数据。
3.浏览器可以认为是用来解读http协议的客户端,最终显示的内容是http协议数据体部分html格式的数据。
分享到:
相关推荐
javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed; boundary="----=_Part_0_1760344884.1407394057461" 第一步:需要先grantq权限: EXEC dbms_java.grant_...
Symfony multipart/related , multipart/alternative和multipart/mixed内容类型处理程序。 该捆绑软件实现了规范的子集,并允许您处理Content-Type: multipart/*; 与Symfony的请求。 安装 运行composer require ...
在Web服务中,可以通过使用 MIME 的 `multipart/related` 类型来传输文件。这种方式将文件数据和其他XML数据打包在一起,通过HTTP协议发送。相比直接使用XML编码文件数据,这种方式更高效,因为它避免了XML格式的...
多部分建造者 用于创建多部分相关文件的简单构建器。 由于很难弄清楚如何构建支持多部分/相关格式的请求,因此我构建了一个小工具来为您完成。 要生成多部分/相关请求...Content-Type: multipart/related; boundary="A
从文件中可以看到,Content-Type为multipart/related,boundary="--FA9F91F8AB2B807B2D9BFF2E7C20486F_MULTIPART_MIXED",这表明该文件是一个MIME多部分消息。 2. HTML格式:从文件中可以看到,内容类型为text/html...
--Content-Type: multipart/related; boundary="imagedata"--> --imagedata Content-Type: image/jpeg Content-Location: showimg Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQEASABIAAD/2...
- Content-Type: multipart/related - 表明邮件内容由多个相关部分组成,通常是一个包含文本和嵌入图片的HTML文档。 - boundary - 这是用于分隔邮件中的不同部分的字符串。 - text/html - 指出邮件的部分内容是HTML...
在您给出的部分内容中,`multipart/related` 是MIME的一个类型,用于表示邮件中的各个部分是相互关联的,比如一个HTML邮件可能包含文本和嵌入的图像。`boundary` 参数定义了不同部分之间的分隔符,`Content-Type`、`...
writer.WriteLine("Content-Type: multipart/related; boundary=\"_----------=_1598246105\""); writer.WriteLine(); writer.WriteLine("--_----------=_1598246105"); writer.WriteLine("Content-Type: text/...
- `Content-Type`: 描述了邮件内容的类型,这里是`multipart/related`,意味着邮件中的各个部分是相关的,并且可能有一个共同的主题。 - `boundary`: 这是一个分隔符,用于在MIME多部分消息中区分不同的部分。 - `...
在本文档中,Content-Type为multipart/related,表示该消息体由多个部分组成,每个部分都有其自己的Content-Type。 5. boundary参数:boundary参数是MIME协议中的一种参数,用于指定多个部分之间的分隔符。在本文档...
`multipart/related`表示邮件内容由多个相关部分组成,`boundary`定义了这些部分的分隔符。 4. `X-MimeOLE`: 这是一个特定于微软Outlook等邮件客户端的头字段,表示邮件是由Mht File Maker v1.0 beta创建的。 5. `...
6. **数据结构**:邮件头中的"multipart/related"和"boundary"属性涉及到数据的分隔和组织,这是理解网络通信和数据包结构的基本概念。 如果需要具体关于道德与法治的知识点,那将需要查看实际的测试卷内容,而上述...
sb.Append("Content-Type:multipart/related;\n"); sb.Append("boundary=\"----=_IMG_DATA\";\n"); sb.Append("type=\"text/html\"\n"); sb.Append("\n"); sb.Append("\n"); // HTML内容 sb.Append("------=...
- **Content-Type:** 指定了消息体的类型,本例中为`multipart/related`,表示整个消息由多个相关部分组成。 - **Boundary:** 分割不同部分的边界字符串。 #### CSS样式表 - **Content-Type:** 指定了这部分内容是...