在作为http1.1标准的rfc2616中,带引号的字符串定义如下。
quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )
uoted-pair = "\" CHAR
CHAR = <any US-ASCII character (octets 0 - 127)>
qdtext = <any TEXT except <">>
TEXT = <any OCTET except CTLs, but including LWS>
根据这个定义,“\”似乎是一个TEXT,因此&lt;“&gt; \&lt;”&gt; (引用,反斜杠,引用)似乎是一个有效的引用字符串。但这与正确使用反斜杠作为转义字符相矛盾,甚至可能导致无法明确地确定引用字符串的结尾。我的错误在哪里?
rfc也声明了
LWS = [CRLF] 1*( SP | HT )
All linear
white space, including folding, has the same semantics as SP. A
recipient MAY replace any linear white space with a single SP before
interpreting the field value or forwarding the message downstream.
我已经阅读了解释,即使引用字符串中的LWS也可以被SP替换。如果我从字面上理解它所说的那就是rfc。我很困惑,因为这意味着引用的字符串“”,“\ n”,“\ n \ t \ t \ t \ t”,......都是一样的。这些引用的字符串真的不能在语义上区分吗?
答案 0 :(得分:3)
问题1:这是RFC中的一个错误。
请参阅HTTPbis WG ticket 31和HTTPbis, Part 1, Section 3.2.3。
问题2:见HTTPbis Part 1, 3.2.1 - 所以不,你无法区分这些。