POP3_关于 multipart/related;boundary=
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格式的数据。
POP3_关于 multipart/related;boundary=的更多相关文章
- 关于 Content-Type:application/x-www-form-urlencoded 和 Content-Type:multipart/related(转)
最近项目中用到的一个是用一个页面接收c程序post过来的一断字符串..总接收不到值... 我用C#写一个测试可以正常接收到值. 最后抓包比较 区别只是 Content-Type:application ...
- http 协议上传文件multipart form-data boundary 说明--转载
原文地址:http://xixinfei.iteye.com/blog/2002017 含义 ENCTYPE="multipart/form-data" 说明: 通过 http 协 ...
- post multipart data boundary问题 使用curl 向jersey post文件
原以为curl 模拟post file跟post string类似,-d参数一加 ,header一加就完了,这次遇到个问题,却怎么都搞不定. curl模拟post提交 与客户端定的协议是: Heade ...
- org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundaryRAYPKeHKTYSNdzc1;charset=UTF-8' not supported
原文:https://www.cnblogs.com/yueli/p/7552888.html 最近同事在做一个图片上传功能.在入参 body 中同时传入文件和其它基本信息结果出现如题异常.在此记录下 ...
- 上传文件multipart form-data boundary 说明
含义 ENCTYPE="multipart/form-data" 说明: 通过 http 协议上传文件 rfc1867协议概述,客户端发送内容构造. 概述 ...
- multipart/form-data boundary 说明
含义 ENCTYPE="multipart/form-data" 说明: 通过 http 协议上传文件 rfc1867协议概述,jsp 应用举例,客户端发送内容构造 1.概述在最初 ...
- 关于 Content-Type:application/x-www-form-urlencoded 和 Content-Type:multipart/related(转)
转至:http://www.cnblogs.com/taoys/archive/2010/12/30/1922186.html application/x-www-form-urlencoded: 窗 ...
- 关于 Content-Type:application/x-www-form-urlencoded 和 Content-Type:multipart/related
最近项目中用到的一个是用一个页面接收c程序post过来的一断字符串..总接收不到值... 我用C#写一个测试可以正常接收到值. 最后抓包比较 区别只是 Content-Type:application ...
- 细说 Data URI
Data URL 早在 1995 年就被提出,那个时候有很多个版本的 Data URL Schema 定义陆续出现在 VRML 之中,随后不久,其中的一个版本被提上了议案——将它做个一个嵌入式的资源放 ...
随机推荐
- scala 基础知识总结
在最开始处引入 log 相关的 包 import org.apache.log4j.{Logger,Level} 在需要屏蔽日志输出的地方加上这两行代码 // 屏蔽不必要的日志显示在终端上 Logge ...
- git 学习小记之记住https方式推送密码
昨天刚刚学了点git基础操作,但是不幸的是Git@OSC给出公告说尽量使用 https 进行操作.可是在用 https 进行 push 时,都需要输入帐号和密码. 各种百度谷歌之后在Git@OSC官网 ...
- Python核心编程——Chapter16
好吧,在拜读完<Python网络编程基础>之后,回头再搞一搞16章的网络编程吧. Let‘s go! 16.4.修改书上示例的TCP和UDP客户端,使得服务器的名字不要在代码里写死,要允许 ...
- 洛谷 P1603 斯诺登的密码
我一开始还没看懂非正规数字的意义,以为那里写的单词不算,蒙了好久,而且这题非常考验仔细程度,一不小心就RE,WA. 嗯,好像讲了些废话,那我们看看思路,我的做法和前面的大佬们有些不同,因为这题只有六个 ...
- 用python socket模块实现简单的文件下载
server端: # ftp server端 import socket, os, time server = socket.socket() server.bind(("localhost ...
- 公共语言运行库(CLR)开发系列课程(1):Pinvoke 简介 学习笔记
前言 让拖管代码对象和非托管对象协同工作的过程称为互用性(Interoperability),通常简称为 Interop. P/Invoke在托管代码与非托管代码交互式时产生一个事务(Transiti ...
- 重温CSS之文档结构
我们来看看几个基本的HTML页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- HTML5 drawImage性能问题
最近做游戏发现,为了节省HTTP请求,把很多组动画放到了一张图片上,也就是传说中的雪碧图,但是用drawImage从图片上截取一部分绘制在canvas上时会非常慢. 我的图片尺寸为5000*7000 ...
- shell升级完整记录
[root@localhost bash-4.3.30]# cat Makefile |grep prefix prefix = /usr/local exec_prefix = ${prefix} ...
- 有用的Python模块 - pprint
当想在终端打印一个很大的字典或者一个很长的列表时,总是被print打印出来的效果气懵在电脑前,现在有pprint就不用担心啦. 最直接的使用方式就是 import pprint pprint.ppri ...