这是格式正确的 multipart/form-data 请求吗?

Is this a well formed multipart/form-data request?

边界标记可以出现在先前字段数据的末尾吗?请注意,为简洁起见,我删除了 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--

不,据我所知这是无效的。

body 部分之间的边界必须以 CRLF 对开头。在这种情况下,您缺少 encapsulation 中的 CRLF。 (见下文)。您 缺少标记外部 headers.

结尾的额外 CRLF(即空行)

MIME 语法

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

根据 RFC 2046,multi-part 消息 body 的结构摘录。(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 "--"

参考资料

否,无效。 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--