这个ABNF中的[CFWS]和[FWS]是什么意思?

问题描述 投票:0回答:1

电子邮件的 RFC 2282 具有以下用于引用字符串的 ABNF。

quoted-string   =       [CFWS]
                        DQUOTE *([FWS] qcontent) [FWS] DQUOTE
                        [CFWS]

我用谷歌搜索,发现

CFWS
是注释、折叠、空白。我知道什么是空格,但不知道电子邮件地址中的 ABNF 的注释和折叠是什么。

还有

[FWS]
里面的
*()
是什么意思?双引号可以出现 0 次或多次
qcontent
,前面有折叠和空格?

这非常令人困惑。非常感谢了解 ABNF 的参考资料。

validation email abnf
1个回答
12
投票

这不是通用 ABNF 语法的一部分(当前在 RFC 5234 中定义,尽管 RFC 2234 是编写 RFC 2282 时正在使用的 ABNF 定义)。相反,

FWS
CFWS
是电子邮件 RFC 本身中定义的特殊标记(请参阅 RFC 2822 的第 3.2.3 节,或 RFC 5322 的第 3.2.2 节,后者于 2008 年废弃了 RFC 2822)。

来自 RFC 5322:

2.2.3。长标题字段

每个标头字段逻辑上都是一行字符 由字段名称、冒号和字段主体组成。为了 不过方便,处理998/78字符 每行的限制,标题字段的字段主体部分可以是 分成多行表示;这称为“折叠”。 一般规则是,只要本规范允许 折叠空白(不仅仅是 WSP 字符),CRLF 可能是 插入任何 WSP 之前。

例如标头字段:

Subject: This is a test

可以表示为:

Subject: This
 is a test

...

从这种折叠的多行表示移动的过程 将标头字段转换为其单行表示形式称为 “展开”。只需删除任何 CRLF 即可完成展开 紧随其后的是 WSP。每个标头字段应该是 以展开的形式进行进一步的句法和语义处理 评估。展开的标头字段没有长度限制,并且 因此可能会不确定长。

...

3.2.2。折叠空白和注释

空白字符,包括折叠中使用的空白 (在第 2.2.3 节中描述),可能出现在中的许多元素之间 标头字段主体。此外,字符串被视为 评论可以作为字符包含在结构化字段主体中 括在括号中。下面定义折叠白 空格(FWS)和注释结构。

考虑用括号括起来的字符串 注释只要它们不出现在“引用字符串”中,如 定义于

节 3.2.4。评论可能会嵌套。

本规范中有几处注释和 FWS可以自由插入。为了适应该语法, “CFWS”的附加标记是为评论的地方定义的 和/或 FWS 可能发生。然而,CFWS 发生的地方 规范,它不得以任何行的方式插入 折叠标头字段的 完全由 WSP 字符组成并且 没有别的了。

FWS = ([*WSP CRLF] 1*WSP) / obs-FWS ; Folding white space ctext = %d33-39 / ; Printable US-ASCII %d42-91 / ; characters not including %d93-126 / ; "(", ")", or "\" obs-ctext ccontent = ctext / quoted-pair / comment comment = "(" *([FWS] ccontent) [FWS] ")" CFWS = (1*([FWS] comment) [FWS]) / FWS
在本规范中,FWS(折叠空白)
token)出现,它表示折叠的地方,如中讨论的

第 2.2.3 节,可能会发生。无论折叠出现在哪里 消息(即包含 CRLF 后跟的标头字段主体 任何 WSP),展开(删除 CRLF)在任何之前执行 根据该标头字段进行进一步的语义分析 到这个规范。也就是说,任何出现在FWS中的CRLF都是 语义上“看不见”。

注释通常用在结构化字段正文中,以提供一些信息 人类可读的信息文本。既然允许发表评论 包含 FWS,注释中允许折叠。另请注意 由于注释中允许使用引号对,因此括号和 反斜杠字符可能会出现在注释中,只要出现 作为引用对。从语义上讲,括弧不是 评论的一部分;评论是两者之间包含的内容 括号。如前所述,任何引用对中的“”和 注释中出现的任何 FWS 中的 CRLF 在语义上都是 “看不见”,因此也不属于评论的一部分。

a 中的词汇标记之间发生的 FWS、注释或 CFWS 运行

结构化标头字段在语义上被解释为单个空格 性格。

© www.soinside.com 2019 - 2024. All rights reserved.