Skip to content
Language:hu Author:Laborci Gergely
http

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:

https://kurzuspont.example:443/kurzusok/webprog?felev=2026-osz&szuro=web%20programozas#kovetelmenyek

A cím balról jobbra egyre pontosabban azonosítja a célt.

Rész Példa Szerepe
Séma (scheme) https Az elérés módja: milyen protokollal fordul a böngésző a célhoz.
Hosztnév (host) kurzuspont.example Melyik szolgáltatáshoz fordul a böngésző.
Port 443 A szolgáltatás melyik hálózati „ajtaján” lépünk be.
Útvonal (path) /kurzusok/webprog Melyik erőforrást kérjük a szolgáltatáson belül.
Lekérdezés (query) ?felev=2026-osz&szuro=web%20programozas Kiegészítő paraméterek: szűrés, keresés, kiválasztás.
Fragmentum (fragment) #kovetelmenyek A kapott dokumentum egy része; a böngésző kezeli.
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ő:

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):

https: kurzuspont.example "" /kurzusok/webprog ?felev=2026-osz&szuro=web%20programozas #kovetelmenyek
[ [ 'felev', '2026-osz' ], [ 'szuro', 'web programozas' ] ]

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:

console.log(encodeURIComponent("webprogramozás & adatbázis"));
webprogramoz%C3%A1s%20%26%20adatb%C3%A1zis

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:

console.log(new URL("../adatbazisok?x=1", "https://kurzuspont.example/kurzusok/webprog").href);
https://kurzuspont.example/adatbazisok?x=1

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

Cím Mit kér?
https://kurzuspont.example/ A kezdőlapot
https://kurzuspont.example/kurzusok A kurzusok listáját
https://kurzuspont.example/kurzusok/webprog Egy konkrét kurzus oldalát
https://kurzuspont.example/kurzusok?felev=2026-osz A lista szűrt változatát
https://kurzuspont.example/kurzusok/webprog#kovetelmenyek Ugyanazt az oldalt, a követelmények részre ugorva

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

  1. Bontsd fel részeire: https://kurzuspont.example:8443/kurzusok?felev=2026-osz#lista!
  2. Melyik részt nem küldi el a böngésző a szervernek?
  3. Miért kell kódolni a & jelet egy keresőszó értékében?
  4. Miért veszélyes jelszót tenni az URL lekérdezési részébe?

Tanulási források

Prerequisites (1)

  • kliens–szerver modell

Teaches (1)

  • URL