Http 这是一个格式良好的多部分/表单数据请求吗?

Http 这是一个格式良好的多部分/表单数据请求吗?,http,multipartform-data,Http,Multipartform Data,边界标记可以出现在前一个字段数据的末尾吗?注意,为了简洁起见,我删除了大部分XML数据体。所讨论的边界标记是紧跟在XML结束标记之后的一个边界标记-在那里有一个边界标记是有效的还是应该单独在下一行上 Connection: Keep-Alive Content-Length: 5466 Content-Type: multipart/form-data; boundary=----------9042941111365854226 ------------9042941111365854226

边界标记可以出现在前一个字段数据的末尾吗?注意,为了简洁起见,我删除了大部分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--
连接:保持活动状态
内容长度:5466
内容类型:多部分/表单数据;边界=------------9042941111365854226
------------9042941111365854226
内容配置:表单数据;name=“xml”
...------------9042941111365854226
内容配置:表单数据;name=“objname”
审计事件
------------9042941111365854226--

不,据我所知,它是无效的

车身零件之间的边界必须以
CRLF
对开始。在本例中,您缺少
封装中的
CRLF
。(见下文)。同时缺少额外的
CRLF
(即一个空行),该行标记外部标题的结尾

MIME语法 (多部分/表单数据遵循MIME数据的规则)

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

多部分正文:=[前导码CRLF] 破折号边界CRLF 身体部位*封装 闭合分隔符 [CRLF结语] 破折号边界:=“--”边界 主体部分:=MIME部分标题[CRLF*八位字节] 封装:=分隔符 CRLF车身部件 分隔符:=CRLF破折号边界 关闭分隔符:=分隔符“-” 工具书类

否,它无效。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--
连接:保持活动状态
内容长度:5466
内容类型:多部分/表单数据;边界=------------9042941111365854226
------------9042941111365854226
内容配置:表单数据;name=“xml”
...
------------9042941111365854226
内容配置:表单数据;name=“objname”
审计事件
------------9042941111365854226--

Remy-感谢您的回复。我将把Nisse的回答标记为答案,因为他包含了支持此答案的参考链接。不完全是:RFC 2046规定边界必须始终从行的开始处开始。这对于第一个边界引用很重要。在您的示例中,可以删除内容类型标题后的空行。RFC还声明第一个边界之前和最后一个边界之后的内容将被忽略,因此这也不是错误,但对于接收者来说仍然很重要。@Hibou57“在您的示例中,可以删除内容类型标题之后的空行。”-不,不能,因为空行实际上是HTTP头和HTTP正文之间的分隔符,所以它必须存在。开始边界位于HTTP正文的第1行。“RFC还声明第一个边界之前和最后一个边界之后的内容将被忽略”-是的,在HTTP正文中,但这不适用于我的示例,因为在开始边界之前或最终结束边界之后没有任何内容。@RemyLebeau,哦,你是对的,对不起。当我写消息时,我只想到了消息体,事实上,您谈论的是HTTP头和消息体。
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--