最大长度 headers

Maximum length of headers

我对 header 名称的最大长度感兴趣,header 值。 还有最大参数个数有限制吗?

相关规范的

None 定义了 header 名称或值的最大长度, rfc5321 section 4.5.3.1.6 指出最大行长度为 1000 个八位字节(也称为 1000 字节),包括终止 序列。

这对最大 header name/value 长度有何影响,您可能会问?

它根本不影响最大 header value 长度,因为 rfc5322 section 3.2.2 定义了 CFWS (Comment Folding WhiteSpace) 进一步用于 headers,这基本上允许 header values 的长度是无限的。

也就是说,虽然 explicit 字段 header 字段 name 没有最大长度,但 实用的

  • 最大行长度为 1000 个八位字节(包括终止 序列)。
  • 推荐 最大行长度为 78 个八位字节(参见 rfc5322 section 2.1.1)。
  • header 的句法定义如下所示:
    optional-field = field-name ":" unstructured CRLF
    field-name = 1*ftext
    ftext = %d33-57 / ; Printable US-ASCII
    %d59-126 ; characters not including
    ; ":".
    (其中 optional-field 是规范中不属于 pre-defined 的任何 header 字段,例如“收件人”、“发件人”、“日期”、“主题”等)。此语法定义可在 rfc5322 section 3.6.8.
  • 中找到
  • Header 字段名称 不能 折叠(如语法定义所示)。

因为必须可以表示一个 header 字段名 冒号 (":") 都在 998 字节以内(1000 字节减去 序列),我们可以安全地得出结论,header 字段名称的最大长度为 997 字节(或者,由于 header 字段名称被限制为 US-ASCII,997 字符) 和 应该 被限制在建议的最大行长度 78 字节以内,这意味着最大 header 字段名 应该 最大值为 77 bytes/characters.