tangguo

HTTP多部分(POST)请求中的boundary参数是什么?

java

我正在尝试开发一个侧边栏小工具,该工具可以自动检查网页中我的转让配额的演变过程。我快要解决了,但是我需要做的最后一步是:将带有正确POST数据的HttpRequest发送到php页面。使用firefox插件,标题的“ Content-Type”如下所示:

Content-Type=multipart/form-data; boundary=---------------------------99614912995

参数“边界”似乎是随机的,而POSTDATA是这样的:

POSTDATA =-----------------------------99614912995
Content-Disposition: form-data; name="SOMENAME"

Formulaire de Quota
-----------------------------99614912995
Content-Disposition: form-data; name="OTHERNAME"

SOMEDATA
-----------------------------99614912995--

我不明白如何使用神秘的“边界”参数返回来正确模拟POSTDATA。

有人知道我该怎么解决吗?


阅读 4510

收藏
2020-11-23

共1个答案

小编典典

引用RFC 1341的7.2.1节,我认为是标头boundary参数的相关位Content-Type(对于MIME):

“ multipart”的所有子类型都具有相同的语法…

多部分实体的Content-Type字段需要一个参数“边界”,该参数用于指定封装边界。封装边界定义为一行,该行完全由两个连字符(“-”,十进制代码45)组成,后跟来自Content-Type标头字段的边界参数值。

然后澄清:

因此,典型的多部分Content-Type标头字段可能如下所示:

 Content-Type: multipart/mixed; boundary=gc0p4Jq0M2Yt08jU534c0p

这表明该实体由几个部分组成,每个部分本身的结构与RFC 822消息在语法上相同,不同之处在于标头区域可能完全为空,并且每个部分前面都带有–gc0p4Jq0M2Yt08jU534c0p行

注意事项:

  1. 封装边界必须出现在行的开头,即,在CRLF(回车换行)之后
  2. 该边界必须紧随其后,或者是另一个CRLF和下一部分的标题字段,或者是两个CRLF,在这种情况下,下一部分没有标题字段(因此,假定其为Content-Type text /平原)。
  3. 封装边界不能出现在封装中,并且长度不能超过70个字符,这不包括两个前导连字符。
    最后但并非最不重要的:

最后一个主体部分之后的封装边界是一个显着的定界符,指示不再跟随其他主体部分。这样的定界符与之前的定界符相同,在行的末尾添加了另外两个连字符:

--gc0p4Jq0M2Yt08jU534c0p--

我希望这对以后的其他人有所帮助,因为在获取全貌之前我必须漫游一段时间(请确保阅读必要的RFC以获得最深刻的理解)。

2020-11-23