我在RFC 7578和它所指的RFC中似乎保留了隐式允许的空白,而当允许使用此类空白时,则应明确说明。由于同样的空白故事,我对模棱两可的内容也感到非常困难。
RFC 7578 at 4.2关于“内容处置”,给出了以下示例:
Content-Disposition: form-data; name="user"
它是参照RFC 2183进行的。此RFC 2183 at 2给出了BNF规则,没有明确提及空白(WSP和LWS均未提及),而上述RFC 7578中的示例显然使用了空白-空格,而规则对此没有提及:
disposition := "Content-Disposition" ":"
disposition-type
*(";" disposition-parm)
RFC 2183指的是RFC 822,现在是RFC2822。此RFC 2822 at 3.2.4和3.2.5明确提到了在原子(或点原子)和引号字符串周围的CFWS。在其他地方,它说基于此RFC的语法依赖于它定义的标记化。
因此,“ form-data”和“ name”可能是RFC 2822之后的原子,这将解释为什么在示例中两个空格之前都可以出现空格(“;”是特殊字符,因此是一个标记) 。但是RFC 2822所指的RFC 2234 at 3.1说:
任何希望在周围允许线性空白的语法 分隔符或字符串段必须明确指定。 […]
然后,仍然与上述示例相同,如果它是由原子组成的,则“ name”“ =”是不明确的,因为“ name =”可能是一个原子,并且没有规则说是否允许空格在“名称”和“ =”之间,这正是我对它的含糊之处。
这只是一个例子,我只是觉得在这些标准的其他地方还不清楚。
可以理解为:它由原子(和带引号的字符串)组成,并且原子(和带引号的字符串)周围允许有空格,尽管某些RFC并未明确声明有关空格或他们的规则中有原子,而应该这样做?
顺便说一句,这些RFC似乎根本不是指原子/点原子,而是由除 tspecials 以外的任何可打印字符组成的一种令牌,在多个地方定义相同,一组看起来很像RFC 822中的 specials 的字符,但有所不同。此令牌定义与RFC 822/2822中的令牌定义不同。尽管指的是RFC 822,但这些RFC似乎重新定义了它们自己的符号。空格仍然不清楚。