这是一个格式良好的multipart / form-data请求吗?

时间:2015-01-16 21:57:52

标签: http multipartform-data

边界标记是否可以位于前一个字段数据的末尾?请注意,为简洁起见,我已删除了大部分XML数据。有问题的边界标记是紧跟在XML的结束标记之后的边界标记 - 在那里有边界标记是否有效,或者它应该在下一行自身?

Connection: Keep-Alive
Content-Length: 5466
Content-Type: multipart/form-data; boundary=----------9042941111365854226
------------9042941111365854226
Content-Disposition: form-data; name="xml"

<?xml version="1.0" encoding="ISO-8859-1"?><srvhandle>...</srvhandle>------------9042941111365854226
Content-Disposition: form-data; name="objname"

auditevent
------------9042941111365854226--

2 个答案:

答案 0 :(得分:2)

不,就我所知,它无效。

身体部位之间的界限必须以CRLF对开头。在这种情况下,您错过了CRLF中的encapsulation。 (见下文)。您错过标记外部标题结尾的额外CRLF(即空行)。

MIME语法

(Multipart / form-data遵循MIME数据规则)

根据RFC 2046,这是多部分消息体结构的摘录。(BNF语法略有简化。)

multipart-body := [preamble CRLF]
                  dash-boundary CRLF
                  body-part *encapsulation
                  close-delimiter
                  [CRLF epilogue]

dash-boundary := "--" boundary

body-part := MIME-part-headers [CRLF *OCTET]

encapsulation := delimiter
                 CRLF body-part

delimiter := CRLF dash-boundary

close-delimiter := delimiter "--"

参考

答案 1 :(得分:2)

不,它无效。 MIME边界始终以CRLF开头。您在前两个边界前面缺少CRLF,但在最后一个边界上没有。它需要看起来像这样:

Connection: Keep-Alive
Content-Length: 5466
Content-Type: multipart/form-data; boundary=----------9042941111365854226

------------9042941111365854226
Content-Disposition: form-data; name="xml"

<?xml version="1.0" encoding="ISO-8859-1"?><srvhandle>...</srvhandle>
------------9042941111365854226
Content-Disposition: form-data; name="objname"

auditevent
------------9042941111365854226--