Kodowanie, dekodowanie i analiza URL
Koduj i dekoduj URL-e oraz rozkładaj je na części.
O tym narzędziu
Koduj tekst procentowo do użycia w URL-u, dekoduj go z powrotem albo rozłóż pełny URL na protokół, host, ścieżkę, parametry zapytania i fragment, z każdym parametrem zdekodowanym.
Jak z tego korzystać
- Wybierz Analizuj URL, aby rozłożyć link na części, albo Koduj / Dekoduj dla kodowania procentowego.
- Wklej URL lub tekst.
- W trybie Analizuj odczytasz protokół, host, ścieżkę i każdy parametr zapytania już po zdekodowaniu.
- Skopiuj potrzebną część.
Pytania
- Czym różni się encodeURI od encodeURIComponent?
- encodeURIComponent koduje wszystko, co ma znaczenie w URL-u, łącznie z / ? & i =, więc używaj go dla pojedynczej wartości parametru. encodeURI zachowuje te znaki, dzięki czemu cały URL pozostaje użyteczny. Przełącza między nimi opcja Zachowaj.
- Dlaczego spacja to czasem +, a czasem %20?
- W query stringach z formularzy HTML spacja jest zapisywana jako +; w pozostałych częściach URL-a jako %20. Przy dekodowaniu danych z formularza włącz „Traktuj + jako spację”.
- Co oznacza „uszkodzona sekwencja procentowa”?
- Po % muszą następować dwie cyfry szesnastkowe, a znaki wielobajtowe wymagają wszystkich swoich bajtów. Tekstu uciętego w środku sekwencji, np. %E2%82, nie da się zdekodować.
- Czy ścieżkę URL koduje się inaczej niż zapytanie?
- W większości obowiązują te same reguły, z dwiema różnicami. W ścieżce / oddziela segmenty, więc koduj każdy segment osobno, a ukośnik wewnątrz nazwy stanie się %2F. Poza tym + w ścieżce to dosłowny plus, a query stringi w formacie formularzy odczytują go jako spację.
- Jak długi może być URL?
- Standardy nie określają limitu, ale obowiązują limity praktyczne. Przeglądarki radzą sobie z bardzo długimi URL-ami, natomiast serwery, proxy i CDN-y często ograniczają linię żądania do około 8 KB i odpowiadają 414 URI Too Long. Trzymaj URL-e poniżej około 2000 znaków, a duże dane wysyłaj w treści żądania POST.
- Czy można bezpiecznie umieszczać tokeny lub adresy e-mail w URL-u?
- Lepiej tego unikać. URL-e trafiają do logów serwera, logów proxy, historii przeglądarki i nagłówka Referer wysyłanego do innych stron. Kodowanie procentowe niczego nie ukrywa, bo każdy może je zdekodować. Zamiast tego wysyłaj tokeny w nagłówku Authorization, a dane osobowe w treści żądania POST.
Co to jest kodowanie URL (percent-encoding)?
Kodowanie URL, czyli kodowanie procentowe (percent-encoding), zastępuje znaki niedozwolone lub mające specjalne znaczenie w URL-u znakiem % i dwiema cyframi szesnastkowymi. Spacja staje się %20, & staje się %26, a / staje się %2F. Reguły pochodzą z RFC 3986, które wymienia znaki niezarezerwowane, nigdy niewymagające kodowania: litery ASCII, cyfry oraz - . _ ~. Wszystko inne może wymagać escapowania, zależnie od tego, w której części URL-a się pojawia.
Tekst spoza ASCII jest najpierw zamieniany na bajty UTF-8, a każdy bajt jest kodowany osobno. Dlatego „é” staje się %C3%A9, a emoji rakiety daje cztery sekwencje, %F0%9F%9A%80. Przy dekodowaniu muszą być obecne wszystkie bajty znaku. To narzędzie używa w Twojej przeglądarce standardowych funkcji encodeURIComponent, encodeURI i decodeURIComponent, więc wyniki kodowania i dekodowania URL są takie same jak w kodzie JavaScript.
Jak rozłożyć URL na części i odczytać parametry zapytania?
Tryb Analizuj URL dzieli link na części zdefiniowane przez standard URL: protokół, nazwę użytkownika, hosta, port, ścieżkę, zapytanie, fragment i origin, każdą z własnym przyciskiem kopiowania. Query string jest rozbijany na pary nazwa–wartość, a każda wartość jest dekodowana, więc ?q=running%20shoes pojawia się jako running shoes. Jeśli parametr występuje więcej niż raz, jak w color=black&color=white, każde wystąpienie dostaje osobny wiersz.
Parser potrzebuje pełnego URL-a ze schematem, więc example.com/path nie zadziała, a https://example.com/path tak. Hasło w URL-u jest maskowane w tabeli części. W kodzie to samo parsowanie zapewnia new URL(link) z url.searchParams w przeglądarkach i Node.js albo urllib.parse w Pythonie. Gdy link pochodzi z polecenia curl, Kreator i konwerter poleceń curl zamieni całe żądanie na fetch albo kod w Pythonie.
Dlaczego mój URL się psuje? Częste błędy kodowania
Klasyczny błąd to budowanie URL-a przez sklejanie surowych wartości. Wyszukiwana fraza taka jak R&D wysłana jako ?q=R&D staje się parametrem q=R i drugim, pustym parametrem o nazwie D. Koduj każdą wartość osobno przez encodeURIComponent albo pozwól, by query string zbudował za Ciebie URLSearchParams. Nigdy nie przepuszczaj całego URL-a przez encodeURIComponent, bo zescapuje też dwukropek i ukośniki, których URL potrzebuje do działania.
Odwrotny błąd to podwójne kodowanie. Wartość zakodowana dwa razy zamienia % na %25, więc spacja staje się %2520 i po jednym dekodowaniu wciąż wygląda jak %20. Jeśli widzisz w URL-u %25, zdekoduj raz i sprawdź, czy wynik nadal zawiera sekwencje escape. Uważaj też na plus: w query stringu często jest odczytywany jako spacja, więc dosłowny + koduj jako %2B.
Coś nie działa albo wynik wygląda na błędny? Zgłoś problem z tym narzędziem