5

HTTP / 1.1標準であるrfc2616では、引用符で囲まれた文字列は次のように定義されています。

quoted-string  = ( <"> *(qdtext | quoted-pair ) <"> )
quoted-pair    = "\" CHAR
CHAR           = <any US-ASCII character (octets 0 - 127)>
qdtext         = <any TEXT except <">>
TEXT           = <any OCTET except CTLs, but including LWS>

この定義では、「」はTEXTのように見えるため、<">\<">(quote、backslash、quote)は有効な引用符で囲まれた文字列のように見えます。ただし、これは、エスケープ文字としてのバックスラッシュの適切な使用法と矛盾し、引用符で囲まれた文字列の終わりを明確に判別できない可能性さえあります。ここで私のエラーはどこにありますか?

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"、…がすべて同じであることを意味するため、私はこれに戸惑っています。それらの引用符で囲まれた文字列は、実際には意味的に区別できませんか?

4

1 に答える 1

5

質問1に関して:これはRFCのバグです。

HTTPbis WGチケット31およびHTTPbis、パート1、セクション3.2.3を参照してください。

質問2に関して:HTTPbisパート1、3.2.1を参照してください-いいえ、これらを区別することはできません。

于 2011-10-25T11:22:15.967 に答える