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