标头的最大长度

Posted

技术标签:

【中文标题】标头的最大长度【英文标题】:Maximum length of headers 【发布时间】:2021-10-04 05:13:31 【问题描述】:

我对标头名称的最大长度、标头值感兴趣。 并且对参数的最大数量有什么限制吗?

【问题讨论】:

RFC 2822 似乎是相关标准,但据我所知,它并没有明确解决这些限制中的任何一个。 【参考方案1】:

没有任何相关规范定义标头名称或值的最大长度,但是 rfc5321 section 4.5.3.1.6 声明最大行长度为 1000 个八位字节(又名 1000 字节),包括终止 序列。

您可能会问,这对最大标头名称/值长度有何影响?

它根本不影响最大标头长度,因为rfc5322 section 3.2.2定义了CFWS(Comment Folding WhiteSpace) 进一步用于标题的 BNF 语法定义中,它基本上允许标题 values 的长度是无限的。

也就是说,虽然没有明确标头字段name的最大长度,但一个实用的。

最大行长度为 1000 个八位字节(包括终止 序列)。 推荐最大行长度为 78 个八位字节(请参阅rfc5322 section 2.1.1)。 标题的语法定义如下所示:optional-field = field-name ":" unstructured CRLFfield-name = 1*ftextftext = %d33-57 / ; Printable US-ASCII %d59-126 ; characters not including ; ":". (其中optional-field 是规范中未预定义的任何标头字段,例如“To”、“From”、“Date”、“Subject”等)。此语法定义可在rfc5322 section 3.6.8 中找到。 标题字段名称​​不能折叠(如语法定义所示)。

由于必须可以在 998 个字节(1000 个字节减去 序列)内表示一个标题字段名称​​和冒号(“:”),我们可以安全地得出头字段名称的最大长度为 997 字节(或者,由于头字段名称被限制为 US-ASCII,997 characters)和 应该 被限制在建议的最大行长度 78 字节内,这意味着最大标题字段名称​​应该最多为 77 个字节/字符。

【讨论】:

以上是关于标头的最大长度的主要内容,如果未能解决你的问题,请参考以下文章

使用 AJP / Tomcat 6.0 设置最大 HTTP 标头大小

可有效存储在 tar 存档标头的大小字段中的最大无符号整数是多少

HTTP 标头 Access-Control-Allow-Origin 中是不是有最大数量的允许来源?

Oracle SQL,在 SELECT 标头中的子查询中返回唯一(最大)行(在 FROM、WHERE 之前)

ORACLE中varchar类型的最大长度是多少

TCP 、UDP包的最大长度是多少?