2010-08-18 38 views
10

我想問一個關於multipart/form數據的問題。我找到了multipart post的http頭和Content-Type:multipart/form-data;邊界= -----...--- boundaryNumber。我想問一下boundaryNumber和'='之間有多少' - '?多部分/表單數據中的' - '是什麼?

回答

26

沒有一個-是強制性的。你可以有任何數量的他們。實際上,爲什麼用戶代理傾向於添加這麼多,這實際上是個謎。這可能是傳統的,因爲在過去,當人們仍然經常查看實際的協議流量時,它提供了一些很好的視覺分離。如今它毫無意義。

但請注意,當您在使用流中的邊界時,它必須以兩個連字符(--)作爲前綴。這是協議的一部分。當然,大多數用戶代理在其邊界使用大量連字符這一事實很難通過示例來看到。

此外,最後邊界(這標誌着消息的結束)的前綴由兩個連字符(--)後綴。

因此,在總結,你可以打電話給你的邊界OMGWTFPLZDIEKTHX,然後你的流量可能是這樣的:

Content-Type: multipart/form-data; boundary=OMGWTFPLZDIEKTHX 

--OMGWTFPLZDIEKTHX 
Content-Type: text/plain 

First part (plain text). 
--OMGWTFPLZDIEKTHX 
Content-Type: text/html 

<html>Second part (HTML).</html> 
--OMGWTFPLZDIEKTHX-- 
+0

感謝您的回覆。 – Questions 2010-08-18 01:31:43

+1

+1用於區分spec中的兩個邊界( - )與通常添加到邊界的多餘(---)... – LesterDove 2010-08-18 01:37:46

+0

當最後一行後面有內容時會發生什麼'--OMGWTFPLZDIEKTHX- - '? – Pacerier 2012-01-11 01:47:28

2

破折號的數量取決於你想要的數量。它可以是零,如果你喜歡 - 只是更多破折號使邊界更加明顯。

邊界由包含兩個破折號的行加上「boundary =」之後的所有內容組成。所以,如果你的頭說:boundary=ABC,邊界看起來像

--ABC 
+0

感謝您的回覆。 – Questions 2010-08-18 01:29:00

1

在你的邊界定義,不需要連字符。當使用該邊界分隔兩個不同的身體部位時,您必須以兩個連字符開頭,後跟您先前定義的邊界字符串。

這在RFC 1341 (MIME)中有解釋,您可以在Multipart部分找到更多信息(鏈接)。

+0

感謝您的回覆。 – Questions 2010-08-18 01:30:18

1

這完全是任意的。

邊界的要點是定義數據的開始和結束。不管它是什麼,只要它不是內容的一部分。

+0

感謝您的回覆。 – Questions 2010-08-18 01:30:38

相關問題