Guide

URL Kodning: Komplett Guide

URL-kodning (även kallad procentkodning) är avgörande för att överföra data i URL:er. Att förstå när och hur tecken måste kodas förhindrar trasiga länkar, säkerhetshål och dataöverföringsfel.

Varför URL-Kodning?

URL:er designades för ASCII-text och har reserverade tecken med speciella betydelser. Tecknet ? startar query strings, & separerar parametrar, = tilldelar värden och # markerar fragment. Om din data innehåller dessa tecken måste de kodas för att undvika feltolkning.

Föreställ dig en sökning efter "Tom & Jerry". Utan kodning skulle ?q=Tom & Jerry behandla & som parameteravskiljare, vilket bryter frågan. Rätt kodat: ?q=Tom%20%26%20Jerry behandlar hela strängen som ett värde.

Icke-ASCII-tecken måste också kodas. URL:er kan bara innehålla ASCII. Internationella tecken som ü, 漢, или måste bli procentkodade bytes för att kunna förekomma i URL:er.

Mellanslag är ett vanligt specialfall. De kan kodas som %20 eller ibland som + (men endast i query strings). Inkonsekvensen orsakar frekventa buggar. Använd %20 för mest tillförlitlig kompatibilitet.

Säkerhetskonsekvenser är betydande. Okodad användarinmatning i URL:er kan möjliggöra XSS-sårbarheter, injektionsattacker och URL-manipulation. Koda alltid användargenererat innehåll som placeras i URL:er.

Hur URL-Kodning Fungerar

URL-kodning ersätter osäkra tecken med procenttecken följt av två hexadecimala siffror. Mellanslagstecknet (ASCII 32, hex 20) blir %20. Tecknet & (ASCII 38, hex 26) blir %26.

För UTF-8-tecken är processen: Konvertera tecknet till UTF-8-bytes, sedan procentkoda varje byte. Tecknet ü är UTF-8-bytes C3 BC, så det blir %C3%BC. Det kinesiska tecknet 中 är UTF-8 E4 B8 AD, så det blir %E4%B8%AD.

Säkra tecken som inte behöver kodning är A-Z, a-z, 0-9 och dessa: - _ . ~ (även om vissa implementationer även kodar dessa).

Reserverade tecken som måste kodas när de är bokstavliga inkluderar: ! # $ & ' ( ) * + , / : ; = ? @ [ ]. Dessa har speciella URL-betydelser, så deras bokstavliga användning kräver kodning.

Dubbelkodning är ett vanligt misstag. Att koda en redan kodad sträng gör %20 till %2520. Avkoda före omkodning eller följ kodningsstatus noggrant.

JavaScript URL-Funktioner

JavaScript erbjuder flera URL-kodningsfunktioner med olika beteenden. Att välja fel bryter URL:er eller exponerar säkerhetssårbarheter.

encodeURIComponent() är vad du vanligtvis vill ha. Den kodar allt utom A-Z a-z 0-9 - _ . ! ~ * ' ( ). Använd den för parametervärden: '?name=' + encodeURIComponent(userInput).

encodeURI() kodar för kompletta URL:er och lämnar reserverade tecken som : / ? & okodade. Använd den för hela URL:er: encodeURI('https://example.com/path?q=test'). Men den hanterar inte parametervärden som innehåller reserverade tecken korrekt.

Den kritiska skillnaden: encodeURI('a&b') returnerar 'a&b' (& förblir). encodeURIComponent('a&b') returnerar 'a%26b' (& kodas). För de flesta användningsfall är encodeURIComponent korrekt för värden.

För avkodning använd decodeURIComponent() för enskilda värden och decodeURI() för kompletta URL:er.

Legacy-funktionerna escape() och unescape() är föråldrade och hanterar inte Unicode korrekt. Använd dem aldrig i ny kod.

Prova verktyget

URL Kodare/Avkodare

URL Kodare/Avkodare

Läs mer

Vanliga frågor

URL Kodare/Avkodare

Vanliga frågor