对于多部分数据请求,Content-Type header 中应使用哪个分隔符?逗号还是分号?

Which separator should be used in the Content-Type header for a multipart data request? Comma or Semicolon?

REST API 网络请求中的 Content-Type header 是否应使用逗号格式,如 RFC 1867:

Content-type: multipart/form-data, boundary=AaB03x

或使用分号,如 RFC 1049 and RFC 2045:

Content-Type: multipart/mixed; boundary=gc0p4Jq0M2Yt08j34c0p

不幸的是,当多个 RFC 相互冲突时,这不是我看到的第一个案例。

在这种情况下,RFC 1049 明确涵盖 Content-type header。 RFC 2045 引用了 RFC 1049。此外,RFC 2045 日期为 1996 年 11 月,因此是最新的。

RFC 1867 中非常简要地介绍了相反的情况。

所以,我建议使用semi-colon。

靠最新 RFC: 7231, section 3.1.1.1 说:

media-type = type "/" subtype *( OWS ";" OWS parameter )

这没有为解释或自定义格式留下空间。

请注意,您的两个相互矛盾的示例并不完全矛盾。 第一个是 RFC-1867,定义了 HTML 的扩展。另外两个,RFC-1049 和 RFC-2045,都定义了对 Internet 邮件协议的扩展。

对于 REST API,我可能会选择 RFC-1867,它的设计考虑了 HTML over HTTP,而不是其他两个,它们是使用 RFC 设计的-记住基于 822 的电子邮件超过 SMTP/POP/IMAP。

这真的只是一个简单的错误,;是正确的。

RFC 1867 是一个实验性定义。所有后续定义都纠正了这个错误。例如:

  • RFC 2388 explicitly replaces 1867 and refers to HTML 40 用于分隔符的(正确)定义。
  • RFC 7231 明确引用 2388 作为要在 HTTP/1.1.
  • 中使用的定义

最后...还有一个 official correction 到 RFC 1867 以使其使用正确的分隔符。