Rozklad probíhá přímo ve vašem prohlížeči, adresa se nikam neodesílá. Funguje i relativní odkaz nebo samotný dotaz.
Části URL
Parametry dotazu
Hodnoty jsou dekódované. Úprava klíče, hodnoty i odebrání řádku se ihned promítne do složené URL.
Složená URL
Jak URL parser použít
- Vložte URL do vstupního pole. Funguje i relativní odkaz nebo samotný dotaz za otazníkem.
- Rozklad na jednotlivé části se zobrazí okamžitě, pod ním tabulka parametrů z dotazu.
- Hodnotu i název parametru můžete přepsat přímo v tabulce. Tlačítkem Přidat vložíte nový, ikonou koše ho odeberete.
- Složená URL se přepočítává při každé úpravě.
- Zkopírujte si buď hotovou URL, nebo textový přehled celého rozkladu.
Z čeho se skládá URL adresa
URL adresa je zápis, který určuje, kde na internetu leží nějaký zdroj a jakým protokolem se k němu dostat. Skládá se ze sedmi částí, z nichž povinné je jen schéma. Zbytek se objevuje podle potřeby, takže i samotné https://example.com je platná adresa s prázdnou cestou.
| Část | Příklad | K čemu je |
|---|---|---|
| Schéma | https: | Určuje protokol. Nezáleží na velikosti písmen, kanonicky se píše malými. |
| Uživatel a heslo | admin:tajne@ | Přihlašovací údaje v URL. Specifikace je nedoporučuje, protože se objeví v historii i v logu. |
| Host | example.com | Doména nebo IP adresa serveru. Také nezáleží na velikosti písmen. |
| Port | :8080 | Číslo portu. Výchozí hodnoty 80 pro http a 443 pro https se vynechávají. |
| Cesta | /blog/clanek | Umístění zdroje na serveru. |
| Dotaz | ?strana=2 | Parametry předané serveru, oddělené znakem &. |
| Fragment | #zaver | Odkaz na místo v dokumentu. Zůstává v prohlížeči a na server se neposílá. |
Nástroj vedle těchto částí zobrazuje i origin, což je trojice schéma, host a port. Není to samostatná část URL, ale odvozená hodnota. Host říká, kde zdroj leží, origin navíc i jakým protokolem. Právě na origin se váže pravidlo same-origin, kterým prohlížeče oddělují stránky od sebe.
Pojmenování se liší podle toho, kterou normu čtete. Starší RFC 3986 definuje gramatiku URI a mluví o autoritě, do které patří uživatel, host i port. Prohlížeče se dnes řídí novějším standardem WHATWG, který autoritu nezná a přihlašovací údaje dělí na uživatele a heslo zvlášť. Rozdíl je i v přísnosti: gramatika z RFC vadný zápis odmítne, zatímco parser v prohlížeči se ho snaží opravit.
Query string a parametry v URL
Query string je část za otazníkem. Obsahuje páry název a hodnota oddělené znakem &, například ?kategorie=obuv&strana=2. Tuhle strukturu přitom žádná norma pro URL nedefinuje. RFC 3986 popisuje dotaz jen jako sekvenci znaků a co s ním server udělá, je věc aplikace.
Páry, oddělovač a pořadí definuje až formát application/x-www-form-urlencoded, tedy to, co posílá HTML formulář odeslaný metodou GET. Ten pracuje se seznamem dvojic, ne s mapou, takže stejný název se může opakovat a pořadí je součástí dat. Nástroj to zachovává: z ?a=1&a=2 dostanete dva řádky a po složení zpátky obě hodnoty ve stejném pořadí.
Co s duplicitou udělá server, už je na jeho implementaci. PHP z ?a=1&a=2 nechá v $_GET jen poslední hodnotu, kdežto JavaScript umí přes getAll() vrátit obě. Když tedy stejný parametr v odkazu vidíte dvakrát, nemusí to být chyba, ale spolehnout se na to nedá.
Proč mezera v odkazu vyjde jako plus
Když v hodnotě parametru necháte mezeru, nástroj ji po složení zapíše jako +. Je to konvence formátu application/x-www-form-urlencoded, stejná, jakou používá odeslaný formulář i funkce URLSearchParams v prohlížeči. Zápis %20 je v dotazu rovnocenný a dekóduje se také na mezeru, takže ani jedna varianta není chybná.
Dvě věci se ale pletou často a vznikají z nich reálné chyby. Doslovné plus, třeba v C++ nebo v telefonním čísle +420, musí být zapsané jako %2B. Kdo pošle prosté +, dostane na druhé straně mezeru. Plus přitom znamená mezeru pouze v query stringu. V cestě je plus doslovný znak a mezera tam musí být %20.
Pokud potřebujete jen zakódovat nebo dekódovat text, použijte enkodér a dekodér URL. Na skládání odkazů pro měření kampaní je zase praktičtější UTM builder, který zná názvy parametrů, které Google Analytics očekává.
Časté otázky
Co dělá URL parser?
Rozebere URL adresu na jednotlivé části a parametry z dotazu vypíše jako přehlednou tabulku s dekódovanými hodnotami. Hodí se, když potřebujete zjistit, co konkrétní odkaz vlastně přenáší. Nebo když chcete parametr změnit a odkaz složit zpátky bez ručního přepisování.
Jak vyčtu z odkazu konkrétní parametr?
Vložte celou URL do nástroje a najděte parametr v tabulce podle názvu. Hodnota se zobrazí už dekódovaná, takže hello%20world uvidíte jako hello world. Pokud je parametr v odkazu vícekrát, dostanete všechny výskyty zvlášť.
Posílá se část za mřížkou na server?
Ne. Fragment za znakem # zpracovává výhradně prohlížeč, takže se neobjeví ani v požadavku, ani v logu serveru. Podle specifikace HTTP není fragment vůbec součástí gramatiky adres http a https. Používá se pro skok na místo v dokumentu a pro směrování v aplikacích běžících v prohlížeči.
Jak dlouhá může URL být?
Standard maximální délku nestanovuje. HTTP jen doporučuje, aby každá strana zvládla adresy alespoň 8 000 bajtů. Nad tím rozhoduje konkrétní server: Apache i nginx mají výchozí limit 8 190 bajtů na celý řádek požadavku a při překročení vrátí chybu 414. V praxi se vyplatí držet odkazy pod 2 000 znaky, aby prošly všude.