如何解释缺少 CRLF 的多部分?
How to interpret multipart that’s missing a CRLF?
这是一个 RFC 2046 使用“边界”作为边界的多部分八位字节流。
--boundary
Content-Type: text/plain; charset="US-ASCII"
abc
--boundary
a
--boundary
--boundary
--boundary
--boundary--
第 1 部分 abc\r\n
带有尾随 CRLF 和一个 header 描述其 content-type。
第 2 部分是 a
,没有 header,也没有尾随换行符。
第 3 部分为空。
第 4 部分是什么?有第 5 部分吗?
尽管我无法提供明确的答案,但这是我基于 RFC 的推理:
根据 RFC 2046 中的 BNF,示例的最后部分(即 OP 的“第 4 部分”和“第 5 部分”)可以概括为
delimiter CRLF delimiter close-delimiter
其中 delimiter := CRLF dash-boundary
。
多部分 body 的 BNF 定义为
multipart-body := [preamble CRLF]
dash-boundary transport-padding CRLF
body-part *encapsulation
close-delimiter transport-padding
[CRLF epilogue]
哪里
encapsulation := delimiter transport-padding
CRLF body-part
尽管 RFC 2046 包含两个明显不同的 body-part
规则,即。 here and here, it seems body-part
may be empty (also see MIME-part-headers
in RFC 2045 and message
in RFC 822)。另外,transport-padding
应该是空的。
假设是这种情况,那么带有空 body-part
的 encapsulation
将是 delimiter CRLF
.
我想这会使“第 4 部分”正式成为空白。
至于“第 5 部分”,根据上述内容,我希望流在 encapsulation close-delimiter
结束,所以那将是 delimiter CRLF close-delimiter
。
但是,流(“第 5 部分”)以 delimiter close-delimiter
结尾,没有 CRLF
(我假设这是问题标题中的“缺少 CRLF”)。
这是否意味着流完全无效(或 non-compliant)?
这是一个 RFC 2046 使用“边界”作为边界的多部分八位字节流。
--boundary
Content-Type: text/plain; charset="US-ASCII"
abc
--boundary
a
--boundary
--boundary
--boundary
--boundary--
第 1 部分 abc\r\n
带有尾随 CRLF 和一个 header 描述其 content-type。
第 2 部分是 a
,没有 header,也没有尾随换行符。
第 3 部分为空。
第 4 部分是什么?有第 5 部分吗?
尽管我无法提供明确的答案,但这是我基于 RFC 的推理:
根据 RFC 2046 中的 BNF,示例的最后部分(即 OP 的“第 4 部分”和“第 5 部分”)可以概括为
delimiter CRLF delimiter close-delimiter
其中 delimiter := CRLF dash-boundary
。
多部分 body 的 BNF 定义为
multipart-body := [preamble CRLF]
dash-boundary transport-padding CRLF
body-part *encapsulation
close-delimiter transport-padding
[CRLF epilogue]
哪里
encapsulation := delimiter transport-padding
CRLF body-part
尽管 RFC 2046 包含两个明显不同的 body-part
规则,即。 here and here, it seems body-part
may be empty (also see MIME-part-headers
in RFC 2045 and message
in RFC 822)。另外,transport-padding
应该是空的。
假设是这种情况,那么带有空 body-part
的 encapsulation
将是 delimiter CRLF
.
我想这会使“第 4 部分”正式成为空白。
至于“第 5 部分”,根据上述内容,我希望流在 encapsulation close-delimiter
结束,所以那将是 delimiter CRLF close-delimiter
。
但是,流(“第 5 部分”)以 delimiter close-delimiter
结尾,没有 CRLF
(我假设这是问题标题中的“缺少 CRLF”)。
这是否意味着流完全无效(或 non-compliant)?