каков точный синтаксис и семантика строки в кавычках в http1.1 rfc2616 - PullRequest
3 голосов
/ 25 октября 2011

В rfc2616 , который является стандартом http1.1, строка в кавычках определяется следующим образом.

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>

С этим определением "\" представляется ТЕКСТОМ, ипоэтому <"> \ <"> (кавычка, обратный слеш, кавычка) представляется допустимой строкой в ​​кавычках.Но это противоречит правильному использованию обратной косой черты в качестве escape-символа и может даже привести к невозможности однозначно определить конец строки в кавычках.Где моя ошибка здесь?

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",… все одинаковы.Разве эти строки в кавычках не могут быть семантически выделены?

1 Ответ

3 голосов
/ 25 октября 2011

По вопросу 1. Это ошибка в RFC.

См. Билет HTTPbis WG 31 и HTTPbis, часть 1, раздел 3.2.3 .

По вопросу 2: см. HTTPbis Часть 1, 3.2.1 - поэтому нет, вы не можете их различить.

...