multipart / form-data中的' - '是什么?

时间:2010-08-18 01:15:04

标签: multipartform-data

我想问一个关于multipart / form数据的问题。我找到了multipart post的http头和Content-Type:multipart / form-data;边界= -----...--- boundaryNumber。我想问一下,boundaryNumber和'='之间有多少' - '?

5 个答案:

答案 0 :(得分:31)

没有一个-是强制性的。你可以拥有任意数量的。对我来说,为什么用户代理往往会增加这么多,这实际上是个谜。它可能是传统的,因为在过去,人们仍然经常查看实际的协议流量,它提供了一些很好的视觉分离。如今它毫无意义。

但请注意,当您使用流中的边界时,它必须以两个连字符(--)为前缀。这是协议的一部分。当然,大多数用户代理在其边界中使用大量连字符这一事实使得很难通过示例看到这一点。

此外, last 边界(标记消息的结尾)以为前缀,后缀为两个连字符(--)。

总而言之,您可以调用边界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--

答案 1 :(得分:2)

短划线的数量取决于您想要的数量。它可以是零,如果你喜欢 - 只是更多的破折号使边界更明显。

边界由包含两个破折号的行加上“boundary =”之后的所有内容组成。因此,如果您的标题显示boundary=ABC,则边界看起来像

--ABC

答案 2 :(得分:1)

在边界定义中,不需要连字符。当使用该边界分隔两个不同的身体部位时,您必须从两个连字符开始,然后是您之前定义的边界字符串。

RFC 1341 (MIME)中对此进行了解释,您可以在“多部分”部分中找到其他信息(链接)。

答案 3 :(得分:1)

完全是武断的。

边界点是定义数据的开头和结尾。无论它是什么,只要它不是内容的一部分。

答案 4 :(得分:0)

<块引用>

Multipart/form-data 媒体类型可被各种应用程序使用,并由各种协议传输,作为用户填写表单的结果返回一组值的方式。

Multipart/form-data 遵循多部分 MIME 数据流模型。多部分/表单数据主体包含一系列由边界分隔的部分。

multipart/form-data 响应示例enter image description here

有四个重要的领域,我们在回应中很重要:

-<<boundary_value>>

Content-Disposition: form-data; name="<<field_name>>"

Content-Type:数据类型

<<field_value>>

“边界”参数是多部分响应中的线索之一:

与其他多部分类型一样,部分以 边界定界符,使用 CRLF、“--”和 “边界”参数。边界作为“边界”提供 multipart/form-data 类型的参数。边界定界符不得出现在任何封装部分的内部,并且通常需要将边界分隔符括起来 Content-Type 标头中引号中的“边界”参数值 场地。 资源 - https://datatracker.ietf.org/doc/html/rfc7578