A lecke végére fel tudod bontani egy URL-t részeire, meg tudod mondani, melyik rész kinek szól (a böngészőnek, a szervernek vagy az alkalmazásnak), és érted, miért nem „fájl elérési útvonal” egy webcím.
Miért kell a webcím?
A webnek egy kérdésre kell megbízhatóan válaszolnia: hol van az a dolog, amit keresek, és hogyan érhetem el? Ha minden szolgáltatás saját módon válaszolna erre, a böngésző nem tudna általánosan működni. A webcím (URL) egyetlen, szabványos szerkezetben adja meg a választ, így a böngésző bármelyik szolgáltatáshoz ugyanúgy fordulhat.
flowchart LR
S["Séma<br/>https"] --> H["Hosztnév<br/>kurzuspont.example"]
H --> P["Port<br/>443"]
P --> U["Útvonal<br/>/kurzusok/webprog"]
U --> Q["Lekérdezés<br/>?felev=2026-osz"]
Q --> F["Fragmentum<br/>#kovetelmenyek"]
Az ábra a részek sorrendjét mutatja, nem azt, hogy a böngésző ezeket külön állomásokon keresné.
Ezt a bontást programmal is el lehet végeztetni. Node.js-ben (a JavaScript szerveroldali futtatókörnyezetében) a URL osztály ugyanazt a szabványos felbontást adja, mint a böngésző:
A port üres, mert a :443 a HTTPS alapértelmezett portja, ezért az URL-szabvány szerint elhagyható. Ugyanez a :8443 esetén nem igaz: az eltérő portot meg kell őrizni. Az alapértelmezett portok a HTTP-nél a 80, HTTPS-nél a 443.
Hosztnév, domain és port
A domainnév ember által megjegyezhető név. Nem maga a szerver, és nem feltétlenül egyetlen gépet jelöl: egy név mögött több kiszolgáló is állhat. A név és a hálózati cím (IP-cím) közötti kapcsolatot a DNS teremti meg (4. fejezet). Itt annyit kell tudni, hogy a név nem azonos a hálózati címmel.
A port azt jelöli, hogy a célgép melyik hálózati szolgáltatásához fordulunk. Fejlesztéskor gyakori a http://localhost:3000/: a localhost a saját gépet, a 3000 egy helyben futó szolgáltatás portját jelöli.
Útvonal, lekérdezés és fragmentum
Az útvonal egy erőforrást jelöl a szolgáltatáson belül. Nem kell valódi fájlnak vagy mappának megfelelnie: a /kurzusok/webprog mögött alkalmazáskód is állhat, amely adatbázisból állítja elő a választ.
A lekérdezés kulcs–érték párokat hordoz & jellel elválasztva. A szerver az útvonallal együtt értelmezi, hogy mit kell visszaadnia (például csak a 2026 őszi kurzusokat). Minden szolgáltatás maga határozza meg a paramétereinek jelentését.
A fragmentum#-tel kezdődik, és a már megkapott dokumentum egy pontjára ugrik. A fragmentum a böngészőben marad: a kérésben nem megy el a szerverhez (az MDN idevágó oldala is ezt írja). Ettől még nem titkos: a teljes címet látó ember, az előzmények és a megosztott link címzettje is látja.
Különleges karakterek: százalékos kódolás
Az URL-ben bizonyos karakterek (szóköz, &, ?, #, ékezetes betűk) jelentést hordoznak vagy nem szerepelhetnek közvetlenül. Ezeket százalékos kódolással (percent-encoding) írjuk át: a szóköz %20, az é az UTF-8 kódolás (Unicode Transformation Format) bájtjai szerint %C3%A9. A kódolás célja, hogy a paraméterekben lévő szöveg ne keveredjen össze az URL szerkezetét jelző jelekkel:
A kódolt %26 az adatban lévő & jele, tehát nem új paramétert kezd. A böngészők a címsorban sokszor visszaalakítva, olvashatóan mutatják a címet, de a hálózaton a kódolt forma megy.
Relatív hivatkozás
Nem minden hivatkozás teljes cím. Egy oldalon a ../adatbazisok?x=1 hivatkozást a böngésző az aktuális oldal címéhez viszonyítva értelmezi:
Ezt az oldalon belüli hivatkozásoknál használjuk: a címek nem függenek a konkrét tartománytól, így az oldal áthelyezhető.
URL és erőforrás
Az URL egy erőforrás azonosítója és elérési útmutatója, nem maga az erőforrás. Ugyanaz a cím különböző időpontban eltérő tartalmat adhat (a jelentkezők száma változik). Az erőforrás lehet HTML-dokumentum, kép, adat vagy egy alkalmazási művelet eredménye. Egy látható oldal több URL-ről lekért részből állhat össze.
Az URI (Uniform Resource Identifier) tágabb azonosítófogalom, az URL ennek az elérést is megadó változata. A mindennapi munkában URL-t mondunk.
Az utolsó két cím azonos útvonalra mutat, de más módon: a lekérdezés a szervernek szól (más tartalmat kérünk), a fragmentum a böngészőnek (ugyanazt a tartalmat, más ponton olvassuk). Ez a különbség később kiderül a gyorsítótárnál és a biztonságnál is.
Gyakori tévhitek
Állítás
Pontosítás
„A domainnév maga a szerver.”
A név szolgáltatást azonosít; több hálózati végponthoz is vezethet.
„Az útvonal biztosan egy mappa a szerveren.”
Az alkalmazás tetszőleges logikai erőforrásként értelmezheti.
„A fragmentum titkos, mert nem jut el a szerverhez.”
A címben látható és megosztható.
„A port csak helyi fejlesztéskor létezik.”
Éles szolgáltatásnál is van, csak az alapértelmezett portot nem írjuk ki.
„A lekérdezés biztonságosan hordoz bizalmas adatot.”
Naplókba, előzményekbe és megosztásba kerülhet.
Röviden
Az URL séma, hosztnév, port, útvonal, lekérdezés és fragmentum részekből áll.
A fragmentum a böngészőé, a többi a kérés része.
Az útvonal logikai erőforrás, nem feltétlenül fájl.
Speciális karaktereket százalékos kódolással írunk az URL-ben.
Titkot nem szabad az URL-be tenni.
Ellenőrző kérdések
Bontsd fel részeire: https://kurzuspont.example:8443/kurzusok?felev=2026-osz#lista!
Melyik részt nem küldi el a böngésző a szervernek?
Miért kell kódolni a & jelet egy keresőszó értékében?
Miért veszélyes jelszót tenni az URL lekérdezési részébe?
Webcímek és erőforrások
Célok
A lecke végére fel tudod bontani egy URL-t részeire, meg tudod mondani, melyik rész kinek szól (a böngészőnek, a szervernek vagy az alkalmazásnak), és érted, miért nem „fájl elérési útvonal” egy webcím.
Miért kell a webcím?
A webnek egy kérdésre kell megbízhatóan válaszolnia: hol van az a dolog, amit keresek, és hogyan érhetem el? Ha minden szolgáltatás saját módon válaszolna erre, a böngésző nem tudna általánosan működni. A webcím (URL) egyetlen, szabványos szerkezetben adja meg a választ, így a böngésző bármelyik szolgáltatáshoz ugyanúgy fordulhat.
Egy kurzusoldal címe
Nézzük meg a Kurzuspont egy címét:
A cím balról jobbra egyre pontosabban azonosítja a célt.
httpskurzuspont.example443/kurzusok/webprog?felev=2026-osz&szuro=web%20programozas#kovetelmenyekflowchart LR S["Séma<br/>https"] --> H["Hosztnév<br/>kurzuspont.example"] H --> P["Port<br/>443"] P --> U["Útvonal<br/>/kurzusok/webprog"] U --> Q["Lekérdezés<br/>?felev=2026-osz"] Q --> F["Fragmentum<br/>#kovetelmenyek"]Az ábra a részek sorrendjét mutatja, nem azt, hogy a böngésző ezeket külön állomásokon keresné.
Ezt a bontást programmal is el lehet végeztetni. Node.js-ben (a JavaScript szerveroldali futtatókörnyezetében) a
URLosztály ugyanazt a szabványos felbontást adja, mint a böngésző:const u = new URL("https://kurzuspont.example:443/kurzusok/webprog?felev=2026-osz&szuro=web%20programozas#kovetelmenyek"); console.log(u.protocol, u.hostname, JSON.stringify(u.port), u.pathname, u.search, u.hash); console.log([...u.searchParams]);Kimenet (futtatva, Node 24):
A port üres, mert a
:443a HTTPS alapértelmezett portja, ezért az URL-szabvány szerint elhagyható. Ugyanez a:8443esetén nem igaz: az eltérő portot meg kell őrizni. Az alapértelmezett portok a HTTP-nél a 80, HTTPS-nél a 443.Hosztnév, domain és port
A domainnév ember által megjegyezhető név. Nem maga a szerver, és nem feltétlenül egyetlen gépet jelöl: egy név mögött több kiszolgáló is állhat. A név és a hálózati cím (IP-cím) közötti kapcsolatot a DNS teremti meg (4. fejezet). Itt annyit kell tudni, hogy a név nem azonos a hálózati címmel.
A port azt jelöli, hogy a célgép melyik hálózati szolgáltatásához fordulunk. Fejlesztéskor gyakori a
http://localhost:3000/: alocalhosta saját gépet, a3000egy helyben futó szolgáltatás portját jelöli.Útvonal, lekérdezés és fragmentum
Az útvonal egy erőforrást jelöl a szolgáltatáson belül. Nem kell valódi fájlnak vagy mappának megfelelnie: a
/kurzusok/webprogmögött alkalmazáskód is állhat, amely adatbázisból állítja elő a választ.A lekérdezés kulcs–érték párokat hordoz
&jellel elválasztva. A szerver az útvonallal együtt értelmezi, hogy mit kell visszaadnia (például csak a 2026 őszi kurzusokat). Minden szolgáltatás maga határozza meg a paramétereinek jelentését.A fragmentum
#-tel kezdődik, és a már megkapott dokumentum egy pontjára ugrik. A fragmentum a böngészőben marad: a kérésben nem megy el a szerverhez (az MDN idevágó oldala is ezt írja). Ettől még nem titkos: a teljes címet látó ember, az előzmények és a megosztott link címzettje is látja.Különleges karakterek: százalékos kódolás
Az URL-ben bizonyos karakterek (szóköz,
&,?,#, ékezetes betűk) jelentést hordoznak vagy nem szerepelhetnek közvetlenül. Ezeket százalékos kódolással (percent-encoding) írjuk át: a szóköz%20, azéaz UTF-8 kódolás (Unicode Transformation Format) bájtjai szerint%C3%A9. A kódolás célja, hogy a paraméterekben lévő szöveg ne keveredjen össze az URL szerkezetét jelző jelekkel:console.log(encodeURIComponent("webprogramozás & adatbázis"));A kódolt
%26az adatban lévő&jele, tehát nem új paramétert kezd. A böngészők a címsorban sokszor visszaalakítva, olvashatóan mutatják a címet, de a hálózaton a kódolt forma megy.Relatív hivatkozás
Nem minden hivatkozás teljes cím. Egy oldalon a
../adatbazisok?x=1hivatkozást a böngésző az aktuális oldal címéhez viszonyítva értelmezi:console.log(new URL("../adatbazisok?x=1", "https://kurzuspont.example/kurzusok/webprog").href);Ezt az oldalon belüli hivatkozásoknál használjuk: a címek nem függenek a konkrét tartománytól, így az oldal áthelyezhető.
URL és erőforrás
Az URL egy erőforrás azonosítója és elérési útmutatója, nem maga az erőforrás. Ugyanaz a cím különböző időpontban eltérő tartalmat adhat (a jelentkezők száma változik). Az erőforrás lehet HTML-dokumentum, kép, adat vagy egy alkalmazási művelet eredménye. Egy látható oldal több URL-ről lekért részből állhat össze.
Az URI (Uniform Resource Identifier) tágabb azonosítófogalom, az URL ennek az elérést is megadó változata. A mindennapi munkában URL-t mondunk.
Végigvezetett példa: a Kurzuspont címei
https://kurzuspont.example/https://kurzuspont.example/kurzusokhttps://kurzuspont.example/kurzusok/webproghttps://kurzuspont.example/kurzusok?felev=2026-oszhttps://kurzuspont.example/kurzusok/webprog#kovetelmenyekAz utolsó két cím azonos útvonalra mutat, de más módon: a lekérdezés a szervernek szól (más tartalmat kérünk), a fragmentum a böngészőnek (ugyanazt a tartalmat, más ponton olvassuk). Ez a különbség később kiderül a gyorsítótárnál és a biztonságnál is.
Gyakori tévhitek
Röviden
Ellenőrző kérdések
https://kurzuspont.example:8443/kurzusok?felev=2026-osz#lista!&jelet egy keresőszó értékében?Tanulási források