#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
#WEB安全基礎 : HTTP協議 | 0x12 MIME多用途郵件擴展以及多部分對象集合