Over URL-codering
URL-codering, ook bekend als percent-codering, is een mechanisme om informatie te coderen in een Uniform Resource Identifier (URI). Het wordt gebruikt om tekens die niet zijn toegestaan in een URL om te zetten in een formaat dat via het internet kan worden verzonden. Deze codering vervangt onveilige ASCII-tekens door een "%" gevolgd door twee hexadecimale cijfers.
Veelvoorkomende toepassingen van URL-codering
- Formatteren van querystrings in URL's
- Verzenden van formuliergegevens via HTTP-verzoeken (application/x-www-form-urlencoded)
- Maken van geldige URL's met speciale tekens of spaties
- Coderen van niet-ASCII-tekens in URL's
- Doorgeven van complexe parameters in API's en webservices
Hoe URL-codering werkt
URL-codering volgt deze principes:
- Alfanumerieke tekens (A-Z, a-z, 0-9) blijven ongewijzigd
- Speciale tekens zoals spatie, ?, &, =, %, + worden omgezet naar hun percent-gecodeerde equivalenten
- Elke byte van een UTF-8-gecodeerd teken wordt afzonderlijk percent-gecodeerd
- Een spatie kan worden gecodeerd als "%20" of "+" (in queryparameters)
- Gereseveerde tekens zoals /, :, ?, #, [ hebben speciale betekenissen in URL's en kunnen afhankelijk van de context anders worden behandeld
encodeURI versus encodeURIComponent
JavaScript biedt twee functies voor URL-codering:
- encodeURI: Codeert een volledige URI, waarbij tekens die deel uitmaken van de URI-syntaxis behouden blijven (zoals /:?#[]@!$&'()*+,;=)
- encodeURIComponent: Codeert een URI-component (zoals een queryparameterwaarde), waarbij meer tekens worden gecodeerd, inclusief die met een speciale betekenis in een URI
In de meeste gevallen bij het coderen van gebruikersinvoer of queryparameters, encodeURIComponent()
is de veiligere optie omdat het ervoor zorgt dat alle potentieel problematische tekens correct worden gecodeerd.
URL-codering voor internationale tekens
Moderne browsers coderen niet-ASCII-tekens met UTF-8 en percent-coderen vervolgens elke byte. Dit zorgt ervoor dat internationale tekens, emoji's en andere Unicode-symbolen correct in URL's kunnen worden opgenomen. Bijvoorbeeld, het Japanse teken "日" wordt eerst UTF-8 gecodeerd als drie bytes (E6 97 A5) en vervolgens percent-gecodeerd als "%E6%97%A5".
Examples
Platte tekst | URL-gecodeerd |
---|---|
Hallo Wereld | Hallo%20Wereld |
https://example.com/?q=zoekterm | https%3A%2F%2Fexample.com%2F%3Fq%3Dzoekterm |
50% korting! | 50%25%20korting%21 |
Smith & Jones LLC | Smith%20%26%20Jones%20LLC |