🌐 SV

🔗 URL-kodare och -avkodare

Koda eller avkoda URL:er på ett säkert sätt. Hantera specialtecken, internationella tecken och mellanslag i frågeparametrar för att skapa giltiga URL:er.

GUIDE

Las mer

01

1. Vad är URL-kodning?

URL-kodning (procentkodning) är processen att omvandla osäkra tecken i URL:er till % följt av hexadecimala koder. Eftersom URL:er bara tillåter ASCII-tecken behöver koreanska, specialtecken och mellanslag kodas. Till exempel blir mellanslag %20, @ blir %40 och tecknet é kodas som %C3%A9. Enligt RFC 3986 måste tecken andra än A-Z, a-z, 0-9, -, _, ., ~ kodas. Olika delar av URL:er, som frågeparametrar, sökvägar och fragment, har olika kodningsregler.

02

2. Varför koda specialtecken?

Specialtecken i URL:er har särskilda betydelser och måste därför kodas när de används som värden. Till exempel är & en avgränsare för parametrar, så för att inkludera & i ett värde ska det kodas som %26. = är en avgränsare mellan nyckel och värde, ? startar frågor och # startar fragment. Mellanslag kodas som + eller %20. Utan kodning kan koreanska eller andra specialtecken göra att servrar inte tolkar URL:en korrekt eller ger 404-fel. Koda alltid när söktermer eller användarinmatning ingår i URL:er.

03

3. Kodning av frågeparametrar

Frågeparametrar är den del av URL:er som oftast kodas. Exempel: https://example.com/search?q=search&category=IT. Både "search" och "IT" bör kodas. Med JavaScripts encodeURIComponent() kodas =, &, ? vilket gör det säkert för värden i frågeparametrar. encodeURI() används för att koda hela URL:er men kodar inte =, &, ?, vilket gör den olämplig för frågevärden. Koda alltid nycklar och värden var för sig med encodeURIComponent().

04

4. encodeURI kontra encodeURIComponent

JavaScript har två funktioner för URL-kodning. encodeURI() kodar hela URL:er och kodar inte strukturtecken som :, /, ?, &, =. Använd den för kompletta URL:er. encodeURIComponent() kodar URL-komponenter (till exempel parametervärden) och kodar alla strukturtecken. Använd den för enskilda komponenter som frågeparametrar och sökvägssegment. I de flesta fall är encodeURIComponent() säkrare. Avkoda med encodeURI() respektive encodeURIComponent().

05

5. Internationaliserade domännamn (IDN)

Domännamn på koreanska eller andra språk, till exempel hanguk.com, konverteras till Punycode. Punycode representerar Unicode-domäner i ASCII med prefixet xn--. Exempel: "hanguk.com" blir "xn--3e0b707e.com". Webbläsare gör detta automatiskt, men i kod behövs ett Punycode-bibliotek. Observera att URL-sökvägar och frågor använder vanlig procentkodning, medan domäner använder Punycode.

06

6. Bästa praxis för URL-kodning

Viktiga saker att tänka på vid URL-kodning: Koda alltid användarinmatning för att förhindra XSS-attacker. Se till att inte dubbelkoda redan kodade URL:er. När du bygger URL:er, koda varje del för sig och kombinera dem sedan. HTTP-klienter som fetch() och axios kodar ofta automatiskt, så undvik dubbelkodning. Servrar stöder vanligtvis automatisk avkodning, så explicit avkodning behövs oftast inte. När du loggar eller felsöker URL:er är den avkodade formen lättare att läsa.

Vanliga fragor

Ska jag välja komponentkodning eller fullständig URL-kodning?
Använd "komponentkodning" när du bara kodar en del av en URL, till exempel ett frågeparametervärde. Använd "fullständig URL-kodning" bara när du hanterar en hel, komplett URL.
Varför behöver URL:er på andra språk än engelska kodas?
URL:er tillåter bara ASCII-tecken, så tecken utanför ASCII, som é, koreansk eller kinesisk text, måste omvandlas till procentkodning (till exempel %C3%A9) för att servrar ska kunna tolka dem korrekt.
Vad händer om jag kodar en URL som redan är kodad?
Du får dubbelkodning, där % kodas om till %25 och det ursprungliga värdet förstörs. Kontrollera om en sträng redan är kodad innan du kodar den igen.
Vad ska jag göra om avkodning visar felet "Invalid URL encoding"?
Kontrollera om det finns ofullständiga procentsekvenser i inmatningen (till exempel %2 utan tillräckligt många efterföljande hexsiffror). Endast korrekt kodade strängar kan avkodas.
Hur kodas mellanslag?
Mellanslag kodas vanligtvis som + i frågesträngar eller %20 i sökvägar. Det här verktyget använder standardformatet för procentkodning, %20.