URL-Encoding

Mechanismus, der dazu dient, Informationen in einer URL unter bestimmten Gegebenheiten zu kodieren
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 21. Dezember 2006 um 14:27 Uhr durch 145.253.152.38 (Diskussion) (URL-Kodierung (RFC 1945)). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

URL-Kodierung

Die URL-Kodierung (engl. url encoding) wird verwendet, wenn beim Aufruf einer Internet-Seite Informationen vom Web-Browser an den Web-Server übergeben werden.

In der Adressleiste eines Web-Browsers können nicht nur die Adresse (URL) einer Web-Seite eingegeben werden, sondern - durch "?" (Fragezeichen) getrennt - weitere Informationen, die für den Server bestimmt sind. So könnte beispielsweise

http://www.example.net/index.html?lang=DE

bewirken, dass die Einstiegsseite index.html der Domäne example.net in deutscher Sprache angezeigt wird. Bei lang handelt es sich dabei um einen URL-Parameter, dem im obigen Beispiel der Wert "DE" zugewiesen ist. Dieser Wert könnte vom Server als Länderkennzeichen interpretiert werden und die Anzeige einer deutschsprachigen Web-Seite bewirken.

Mehrere Parameterzuweisungen in der URL werden durch "&" (Kaufmanns-UND) voneinander separiert, z.B.

http://www.example.net/index.html?login=Mustermann&passwort=a8zbs

Im obigen Beispiel werden die beiden URL-Parameter login und passwort deklariert und ihnen Werte zugewiesen. Würde allerdings das Passwort nicht a8zbs, sondern 2&z=B lauten, dann darf nicht einfach die URL

http://www.example.net/index.html?login=Mustermann&passwort=2&z=B 

an den Server gesendet werden, denn das Zeichen "&" im Passwort würde als Trennzeichen zwischen den Parametern angesehen werden und der Server würde dies derart interpretieren, dass ihm folgende Daten übergeben wurden:

Parameter Wert
login Mustermann
passwort 2
z B

Eigentlich sollte der Server jedoch folgende Daten übermittelt bekommen:

Parameter Wert
login Mustermann
passwort 2&z=B

Das Problem liegt darin, dass gewisse Zeichen in einer URL besondere Bedeutungen haben, wie zum Beispiel "&" und "=". Diese Zeichen werden auch als reserviert bezeichnet. Reservierte Zeichen, die in zu übertragenen Daten enthalten sind, müssen kodiert werden. Dies geschieht, indem in den Daten statt eines reservierten Zeichens das Zeichen "%" (Prozentzeichen), gefolgt vom zweistelligen Hex-Code seiner US-ASCII-Darstellung angegeben werden.

Im Hinblick auf das obige Beispiel bedeutet dies, das das Zeichen "&" im Passwort durch "%26" zu ersetzen ist, da es den US-ASCII-Code 38 besitzt, was in hexadezimaler Darstellung dem Wert 26 entspricht. Analog hierzu besitzt das Zeichen "=" den hexadezimalen US-ASCII-Code 3D. Werden in den zu übermittelnden Daten das Zeichen "&" durch "%26" und das Zeichen "=" durch "%3D" ersetzt, so lautet die gesamte URL nun

http://www.example.net/index.html?login=Mustermann&passwort=2%26z%3DB

Diese URL bewirkt, dass dem Server tatsächlich das gewünschte Passwort übergeben wird:

Parameter Wert
login Mustermann
passwort 2&z=B

In einer URL wird das Zeichen "&" stets als Trennzeichen interpretiert; kommt dieses in den zu übermittelnden Daten vor, so wird es dort durch die Zeichenfolge "%26" ausgedrückt. Ebenso wird das Zeichen "=" stets als Trennzeichen zwischen Parametername und Parameterwert verstanden; in den zu übermittelnden Daten ist das Zeichen "=" dagegen durch "%3D" ersetzt.

Folgende Zeichen sind in einer URL reserviert:

% : / ? # [ ] @ ! $ & ' ( ) * + , ; =

Folgende Zeichen sind nicht-reservierte Zeichen:

  • Minus-Zeichen "-" (US-ASCII 45)
  • Punkt "." (US-ASCII 46)
  • Ziffern "0" bis "9" (US-ASCII 48 bis 47)
  • Kleinbuchstaben "a" bis "z" (US-ASCII 65 bis 90)
  • Unterstrich "_" (US-ASCII 95)
  • Großbuchstaben "A" bis "Z" (US-ASCII 97 bis 122)
  • Tilde "~" (US-ASCII 126)

Nicht-reservierte Zeichen in URL-Daten können URL-kodiert werden (z.B. %7E für die Tilde), sollten es aber nicht. Dagegen müssen alle reservierten Zeichen grundsätzlich URL-kodiert werden, da sie ansonsten vom Server fehlinterpretiert werden könnten. Andere Zeichen, d.h. Steuer- und Sonderzeichen außerhalb des US-ASCII-Code-Bereichs 32 bis 126, sollten ebenfalls URL-kodiert werden.

Mit dem MIME-Typ "application/x-www-form-urlencoded" können URL-kodierte Informationen gekennzeichnet werden. Bei der Übermittlung von Web-Formularangaben mittels der POST-Methode wird beispielsweise dieser MIME-Typ als Inhaltstyp (engl. Content-Type) angegeben.

  • RFC 1945 (Hypertext Transfer Protocol – HTTP/1.0)