How to interpret multipart that’s missing a CRLF?

Jes*_*son 7 multipartform-data

Here’s a RFC 2046 multipart octet stream that uses a boundary of "boundary".

--boundary
Content-Type: text/plain; charset="US-ASCII"

abc

--boundary

a
--boundary


--boundary

--boundary
--boundary--
Run Code Online (Sandbox Code Playgroud)

Part 1 is abc\r\n with a trailing CRLF and one header describing its content-type.

第 2 部分a没有标题,也没有尾随换行符。

第 3 部分是空的。

什么是第 4 部分?有第五部吗?

djv*_*jvg 2

虽然我无法提供明确的答案,但根据 RFC,这是我的推理:

遵循RFC 2046中的 BNF ,示例的最后部分(即 OP 的“第 4 部分”和“第 5 部分”)可以总结为

delimiter CRLF delimiter close-delimiter
Run Code Online (Sandbox Code Playgroud)

在哪里delimiter := CRLF dash-boundary。多部分体的 BNF 定义为

multipart-body := [preamble CRLF]
                  dash-boundary transport-padding CRLF
                  body-part *encapsulation
                  close-delimiter transport-padding
                  [CRLF epilogue]
Run Code Online (Sandbox Code Playgroud)

在哪里

encapsulation := delimiter transport-padding
                 CRLF body-part
Run Code Online (Sandbox Code Playgroud)

尽管 RFC 2046 包含两个明显不同的规则body-part,即。这里这里,它似乎body-part可能是空的(另见MIME-part-headersRFC 2045messageRFC 822)。另外,transport-padding应该是空的。

假设是这种情况,那么encapsulation空的body-part就是delimiter CRLF

我想这会让“第四部分”正式变空。

至于“第 5 部分”,根据上述内容,我希望流以 结束encapsulation close-delimiter,因此将是 delimiter CRLF close-delimiter

但是,流(“第 5 部分”)以 结尾delimiter close-delimiter,没有 a CRLF(我认为这是问题标题中的“缺少 CRLF”)。

这是否意味着该流根本无效(或不合规)?