raatools/

URL kódoló / dekódoló

URL-ek és lekérdezési karakterláncok kódolása vagy dekódolása.

Mi az URL-kódolás?

Az URL-kódolás (más nevén százalék-kódolás) az URL-ben nem engedett karakterek biztonságos hexadecimális formátumba alakításának mechanizmusa. Minden nem biztonságos karaktert egy százalékjel követ, amelyet az ASCII-kódját képviselő két hex számjegy követ. Például a szóközből %20, az & jelből %26, a # jelből %23 lesz.

Az URL-ek csak az RFC 3986 által meghatározott korlátozott karakterkészletet tartalmazhatnak: betűk (A–Z, a–z), számjegyek (0–9) és néhány speciális karakter (- _ . ~ ! * ' ( )). Minden más karaktert – beleértve a szóközöket, a nem ASCII-betűket és a fenntartott karaktereket, például & = ? # – be kell kódolni, mielőtt URL-be kerülhetne.

Mikor kell kódolni egy URL-t?

  • Speciális karakterek átadásakor lekérdezési paraméterekben (pl. ?q=hello%20world).
  • Adatok kódolásakor HTTP POST kérésben application/x-www-form-urlencoded tartalomt típussal.
  • API-kérési URL-ek szoftveres felépítésekor felhasználó által megadott adatokkal.
  • URL-ek más URL-ekbe való beágyazásakor (pl. átirányítási paraméterekben).
  • Unicode-karakterek (ékezetes betűk, emoji, CJK-karakterek) URL-be való beillesztésekor.

Kódolás vs. dekódolás

A kódolás az egyszerű szöveget URL-biztos karakterlánccá alakítja a nem biztonságos karakterek százalék-kódolt megfelelőikre való cseréjével. A dekódolás megfordítja ezt a folyamatot, visszaalakítva a százalék-kódolt sorozatokat az eredeti karakterekre. Ez az eszköz egyetlen kattintással válthat a kódolás és a dekódolás között.

Az eszköz használata

Illessze be vagy írja be a szöveget a beviteli mezőbe. Válassza ki a kódolás vagy dekódolás módot. A kimenet azonnal frissül. Kattintson a csere gombra az irány megfordításához az aktuális kimenet új bemenetként való felhasználásával. Ez akkor hasznos, ha egy karakterláncot kódol, majd az eredményt visszakódolással ellenőrzi.

Kódolt karakterek

Ez az eszköz a JavaScript encodeURIComponent() függvényét alkalmazza, amely minden karaktert kódol, kivéve: A–Z, a–z, 0–9 és a fenntartott karakterek - _ . ! ~ * ' ( ). Ez a lekérdezési paraméterértékekhez és az űrlapadatokhoz helyes kódolás. A hasonló encodeURI() függvény kevésbé agresszív, és megtartja az URL-struktúrában jelentéssel bíró karaktereket, például : / ? #.

Általános URL-kódolási hibák

A leggyakoribb hiba a kettős kódolás – egy már kódolt karakterlánc újrakódolása, amitől a %20-ból %2520 lesz. Ez tönkreteszi az URL-eket és összezavarja a szervereket. Mindig ellenőrizze, hogy a bemenet már kódolt-e, mielőtt kódolást alkalmaz. Másik hiba az encodeURI() alkalmazása, amikor encodeURIComponent() szükséges, amitől a & és = karakterek kódolatlanok maradnak a paraméterértékekben.

A felhasználói bemenet URL-be való beillesztés előtti kódolásának elmulasztása biztonsági rés. A kódolatlan felhasználói bemenet extra lekérdezési paramétereket injektálhat, tönkreteheti az URL-elemzést, vagy injekciós támadásokat tehet lehetővé. URL-ek szoftveres felépítésekor mindig kódolja a felhasználó által megadott értékeket.

Gyakorlati tippek

A webfejlesztésben a legtöbb keretrendszer automatikusan kezeli az URL-kódolást az űrlap-beküldéseknél és a HTTP-kliens-könyvtárakban. A kézi kódolás általában akkor szükséges, amikor URL-eket dinamikusan épít JavaScript-ben, adatokat ad át URL-töredékekben, vagy speciális karaktereket tartalmazó API-hívásokat hibakeres.

Gyakran ismételt kérdések

Mi a különbség a %20 és a + között a szóközöknél?

Mindkettő szóközt jelöl, de különböző kontextusban. A %20 a szóközök standard URL-kódolása, és mindenhol működik. A + jel csak az application/x-www-form-urlencoded formátumú (HTML-űrlap-beküldések) lekérdezési karakterláncokban jelöl szóközt. Kétség esetén használja a %20-at.

Kell-e kódolni az UTF-8-karaktereket?

Igen. A nem ASCII-karaktereket (ékezetes betűk, emoji, kínai karakterek stb.) UTF-8-kódolás után százalék-kódolni kell az URL-ekbe való beillesztés előtt. A JavaScript encodeURIComponent() függvénye mindkét lépést automatikusan elvégzi, az é karaktert például %C3%A9-re alakítja.