Voor mijn webserver ben ik rfc 2616 (HTTP 1.1) aan het doorploegen.
Daarin ben ik nu al op drie onduidelijkheden gestuit:
•
Ik ben onzeker of er tussen twee tokens ook twee keer LWS direct na elkaar mag (dat is niet hetzelfde als één keer LWS!). Ik ga er voorlopig maar van uit dat dat niet mag. Een ander probleem is dan of er ook LWS mag tussen twee tokens als een van beide een expliciete LWS is. Je zou intuïtief zeggen van niet, maar dat vermoeden zie ik nergens in de rfc bevestigd.
• Als je bovenstaande regel toepast op deze definitie
Iets dergelijks doet zich even verder (pagina 18) voor: daar staat impliciet dat URI's LWS mogen bevatten op een paar punten (let op: die white space maakt dus geen deel uit van de URI!). Daar kan ik op zich mee leven, maar ik betwijfel toch of dat werkelijk zo bedoeld is.
• Een vervelende dubbelzinnigheid zit in het volgende:
Als ik mocht kiezen, zou ik backslashes niet toelaten in qdtext, zodat je ze altijd moet escapen, maar ja, wat is dat waard?
Pas op pagina 20, en nu al onduidelijkheid. Dat belooft niet veel goeds
.
Daarin ben ik nu al op drie onduidelijkheden gestuit:
•
(Een token is alles behalve control characters en separators (lange lijst).)quote: pagina 14implied *LWS
The grammar described by this specification is word-based. Except
where noted otherwise, linear white space (LWS) can be included
between any two adjacent words (token or quoted-string), and
between adjacent words and separators, without changing the
interpretation of a field. At least one delimiter (LWS and/or
separators) MUST exist between any two tokens (for the definition
of "token" below), since they would otherwise be interpreted as a
single token.
Ik ben onzeker of er tussen twee tokens ook twee keer LWS direct na elkaar mag (dat is niet hetzelfde als één keer LWS!). Ik ga er voorlopig maar van uit dat dat niet mag. Een ander probleem is dan of er ook LWS mag tussen twee tokens als een van beide een expliciete LWS is. Je zou intuïtief zeggen van niet, maar dat vermoeden zie ik nergens in de rfc bevestigd.
• Als je bovenstaande regel toepast op deze definitie
, moet je concluderen dat voor en na de "." LWS moet (dat is de "MUST" bij het vorige punt) ("." is geen separator). Voor zover ik weet wordt dat echter nooit gedaan: het is altijd "HTTP/1.1" zonder spaties. Hoe zit dat?quote: pagina 17HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
Iets dergelijks doet zich even verder (pagina 18) voor: daar staat impliciet dat URI's LWS mogen bevatten op een paar punten (let op: die white space maakt dus geen deel uit van de URI!). Daar kan ik op zich mee leven, maar ik betwijfel toch of dat werkelijk zo bedoeld is.
• Een vervelende dubbelzinnigheid zit in het volgende:
Hoe moet je namelijk de quoted string "\\" interpreteren? De backslash is een geldig karakter van TEXT en dus ook van qdtext, dus het kunnen twee backslashes zijn, maar het kan net zo goed één geëscapete backslash zijn.quote: pagina 16A string of text is parsed as a single word if it is quoted using
double-quote marks.
quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )
qdtext = <any TEXT except <">>
The backslash character ("\") MAY be used as a single-character
quoting mechanism only within quoted-string and comment constructs.
quoted-pair = "\" CHAR
Als ik mocht kiezen, zou ik backslashes niet toelaten in qdtext, zodat je ze altijd moet escapen, maar ja, wat is dat waard?
Pas op pagina 20, en nu al onduidelijkheid. Dat belooft niet veel goeds
Pas de replâtrage, la structure est pourrie.