#WEB安全基础 : HTTP协议 | 0x12 MIME多用途邮件扩展以及多部分对象集合

我们是怎么让邮件里又有图片又有文字的?

文字和图片是两个不同的类型,而邮件又是一个类型。

C语言的结构体允许用户定义一个含有多类型的自定义类型

像这样,看不懂没关系,你只要知道邮件里有多个类型就可以了

 typedef struct myType = {

  int num;

  char words[20];

};


那么在HTTP传输里有什么机制支持邮件可以使用多种类型呢?

猜对了,就是MIME(多用途邮件扩展)

在MIME中会使用多部分对象集合的方法来容纳不同的数据

相应地,HTTP协议也采用了多部分对象集合,发送的一份报文主体内可以含有多种类型实体。通常是在图片和文本等上传时使用

多部分对象集合包含的对象如下

multipart/form-data  //在web表单文件上传时使用

例:

mutipart/form-data

Content-Type : mutipart/form-data;boundary = AaB03x

CR+LF

-- Aab03x

Content-Disposition : form-data;name = "fieldl" Joe Blow

CR+LF

--Aab03x

Content-Disposition : form-data; name = "pics"; filename = "file1.txt"

Content-Type : text/plain

//(file1.txt的数据) CR+LF

--AaB03


multipart/byteranges  //状态码206(部分内容)响应报文包含了多个范围的内容时使用

multipart/byteranges

HTTP/1.1 206 Paitial Content

Date ; Fri,13 Jul 2012 02:45:26 GMT

Last-Modified:Fri 31 Aug 2007 02:03:20 GMT

Content-Tupe : multipart/byteranges; boundary = THIS_STRIMG_SEPARATES
CR+LF

--THIS_STRING_SEPARATES
Content-Type : application/pdf

Content-Range:bytes 500-999/8000

//范围指定的数据 CR+LF

--THIS_STRING_SEPARATES
Content-Type : application/pdf

Content-Ranges : bytes 7000-7999/8000

//范围指定的数据 CR+LF

--THIS_STRING_SEPARATES


在HTTP上使用多部分对象集合时,需要在首部字段里加上 Content-Type

使用boundary字符串来划分多部分对象集合指明的各类实体。在boundary字符串指定的各个实体的初始行之前插入--标记,而在多部分对象集合对应的字符串的最后插入--标记作为结束

多部分对象集合的每个部分类型中,都可以含有首部字段

另外,可以在某个部分中嵌套使用部分对象集合

有关MIME更多详细,请参考RFC2046


//本系列教程基于《图解HTTP》,此书国内各大购物网站皆可购买


 转载请注明出处  by:M_ZPHr

 最后修改日期:2019-02-04

上一篇:数值左移右移方法


下一篇:6*12ASCII纵向取模数组