Was URL-Kodierung macht
Eine URL darf nur eine begrenzte Menge an ASCII-Zeichen enthalten, und einige davon – ? & = / # + – geben der URL ihre Struktur. Die Prozentkodierung (RFC 3986) schreibt jedes andere Byte als Prozentzeichen mit zwei Hexadezimalziffern, damit ein Wert in eine URL passt, ohne ihre Bedeutung zu ändern. Zeichen außerhalb von ASCII werden zuerst in ihre UTF-8-Bytes umgewandelt: ü wird zu %C3%BC.
Beispiele
a b&cwird als URL-Komponente zua%20b%26cund als Formulardaten zua+b%26c.Münchenwird zuM%C3%BCnchen.q=base64%20decodewird dekodiert zuq=base64 decode.
URL-Komponente oder Formulardaten?
Nimm URL-Komponente für ein Pfadsegment oder einen einzelnen Query-Wert. Sie kodiert dieselben Zeichen wie encodeURIComponent in JavaScript und zusätzlich ! ' ( ) *. Nimm Formulardaten für Request-Bodys vom Typ application/x-www-form-urlencoded und für Query-Strings aus HTML-Formularen, in denen + ein Leerzeichen bedeutet. Beim Dekodieren ist das der einzige Unterschied: Im Formularmodus wird ein + zum Leerzeichen, als URL-Komponente bleibt es ein Pluszeichen.
Eine ganze URL kodieren?
Kodiere die Teile, nicht die ganze URL. Wird https://example.com/?q=1 als eine Komponente kodiert, werden auch :, / und ? maskiert. Das ist richtig für eine URL, die als Parameter einer anderen URL übergeben wird, etwa als Weiterleitungsziel – aber nicht für einen Link, der sich noch öffnen soll.
URL-Kodierung ist kein Base64: Um Binärdaten in eine URL zu packen, nutze die URL-sichere Variante des Base64-Encoders. Tokens in URLs sind oft JSON Web Tokens, die der JWT-Decoder lesbar macht.