Ich weiß, dass% 20 und + beide auf den gleichen binären Wert (ein Leerzeichen) dekodieren, und für die meisten Webserver, insbesondere diejenigen, die physischen Dateien zugeordnet sind, zeigen sie auf dieselbe Ressource.
Aber meine Frage ist, muss eine URL wie Ссылка auf die gleiche Ressource verweisen wie Ссылка , sind sie kanonisch identisch?
In HTTP / 1.0 + wurde kein Leerzeichen zugeordnet, daher frage ich speziell nach HTTP / 1.1.
Nur innerhalb der Abfragezeichenfolge : Das Pluszeichen ist ein reserviertes Zeichen, also muss es codiert werden, um ein tatsächliches '+' entweder im Pfad oder in der Abfragezeichenfolge zu übergeben. Es ist eine W3C Empfehlung , die nur für die Abfragezeichenfolge verwendet wird:
>Innerhalb der Abfragezeichenfolge das Pluszeichen ist als Kurzschrift für. reserviert ein Leerzeichen. Daher echte Pluszeichen muss codiert sein. Diese Methode wurde verwendet um die Übergabe von URIs zu erleichtern Systeme, die keine Leerzeichen zulassen.
URI-Vergleich ( RFC 2616 ):
Wenn zwei URIs verglichen werden, um zu entscheiden, ob Sie passen oder nicht, ein Client sollte verwenden ein code-sensitives Oktett-by-Oktett Vergleich der gesamten URIs mit Diese Ausnahmen:
%Vor%Andere Zeichen als die in der "reserved" und "unsafe" setzen (siehe RFC 2396 [42]) entsprechen ihren ""% "HEX HEX" Codierung.
Reservierte Zeichen ( RFC 2396 )
";" | "/" | "?" | ":" | "@" | "&Ampere;" | "=" | "+" | "$" | ","
Also, beim dritten Durchstarten: Es gibt nichts Offizielles, das erklärt, dass sie dasselbe sind. Die Verwendung von '+', um http://example.org/hello+world
an ein Verzeichnis mit dem Namen hello+world
zu verweisen, ist falsch, aber es gibt nichts, was besagt, dass es stattdessen als Leerzeichen betrachtet werden sollte.