A lecke végére el tudod olvasni egy HTTP-kérés és -válasz részeit, meg tudod mondani, mi a kezdősor, a fejléc és a törzs szerepe, és érted, miért nem egyetlen kérésből áll egy oldal megnyitása.
Miért kell közös üzenetformátum?
A böngésző és a szerver sosem találkozik előre egyeztetve: a böngészőt egy cég írta, a szervert egy másik, és mégis pontosan értik egymást. Ez csak úgy lehetséges, ha az üzenetek formája szabványos. A HTTP ezt a közös formát adja meg: mit kell tartalmaznia egy kérésnek, és milyen részekből áll a válasz.
A HTTP állapotmentes (stateless): minden kérést önállóan kezel, a szerver a protokoll szintjén nem emlékszik arra, mit kértek korábban. Hogy mégis „bejelentkezve maradunk”, azt a 7. fejezet magyarázza.
Egy oldal megnyitása
A hallgató megnyitja a https://kurzuspont.example/kurzusok/webprog címet. A böngésző kliensként kérést küld, a szerver választ ad:
sequenceDiagram
actor H as Hallgató
participant B as Böngésző
participant S as Webes szolgáltatás
H->>B: Kurzusoldal megnyitása
B->>S: HTTP-kérés az erőforrásért
S-->>B: HTTP-válasz
B-->>H: Eredmény megjelenítése
A HTTP-t nem csak böngésző használja: mobilalkalmazás, parancssori eszköz vagy másik szerver is küldhet HTTP-kérést. A szerepek mindig a konkrét üzenetváltásra vonatkoznak.
A kérés részei
A következő egy valódi, curl parancssori eszközzel küldött kérés. A kimenet a gépen futó kipróbáló szerverről származik, amely a Kurzuspont egy kis modellje; a > jelű sorok a kimenő kérést, a < jelű sorok a válasz fejlécét mutatják:
Kezdősor: metódus (GET), a cél útvonala és lekérdezése, a HTTP-verzió.
Fejlécek: név–érték párok. A Host megmondja, melyik hosztnak szól a kérés (így egy gép több nevet is kiszolgálhat), a User-Agent a klienst azonosítja, az Accept a kívánt válaszformátumot jelzi.
Üres sor, majd törzs: a fejlécek végét üres sor jelzi. A szokásos GET-kérésnek nincs törzse.
A válasz részei
A válasz felépítése hasonló:
Állapotsor: HTTP-verzió, státuszkód (200) és rövid szöveg (OK). A státuszkódokat a 2.4 lecke tárgyalja.
Fejlécek: itt például a Content-Type a törzs formátumát adja meg, a Date a válasz idejét.
Üres sor, majd törzs: a tényleges tartalom, itt egy HTML-részlet.
A 200 csak azt jelenti, hogy a HTTP-kérés protokollszinten sikeres volt, nem azt, hogy minden üzleti szempontból is rendben van.
flowchart TB
subgraph Kérés
K1[Kezdősor: metódus, cél, verzió] --> K2[Fejlécek]
K2 --> K3[Üres sor]
K3 --> K4[Törzs, ha van]
end
subgraph Válasz
V1[Állapotsor: verzió, státuszkód] --> V2[Fejlécek]
V2 --> V3[Üres sor]
V3 --> V4[Törzs, ha van]
end
Egy oldalhoz több kérés tartozhat
A felhasználó egy oldalt lát, de a kezdeti HTML további erőforrásokra hivatkozhat: stíluslapokra, képekre, betűkészletekre, programokra. A böngésző ezeket külön HTTP-kérésekkel tölti le. Egy oldal megnyitása tehát nem feltétlenül egyetlen párbeszéd.
flowchart LR
H[HTML kérése] --> D[HTML-válasz]
D --> C[Stíluslap kérése]
D --> K[Kép kérése]
D --> J[Program kérése]
A külön kérések ugyanahhoz vagy más szolgáltatásokhoz is mehetnek. A böngészők fejlesztői eszközeiben (Chrome, Firefox, Edge és a Safari is rendelkezik ilyennel) található hálózati panel (Network) pontosan ezt a listát mutatja; érdemes egyszer megnézni, hány kérésből áll egy ismert oldal betöltése.
HTTP és HTTPS
A címben a http:// vagy https:// az elérés módját jelzi. A HTTPS ugyanaz a HTTP, de védett (titkosított és hitelesített) kapcsolaton. A kérés–válasz alapminta nem változik, csak a kapcsolat védett. A védelem működését és határait a 4. fejezet tárgyalja. A HTTPS megléte önmagában nem bizonyítja, hogy a tartalom igaz vagy a szolgáltató megbízható.
Végigvezetett példa: a kurzusoldal betöltése
A Kurzuspont kurzusoldalának betöltése így zajlik:
A böngésző GET /kurzusok/webprog kérést küld; a szerver 200-as választ ad a HTML-lel.
A böngésző a HTML-t olvasva észreveszi, hogy stíluslap, program és logó is kell, és ezekre további GET kérést küld.
Ha később a hallgató rákattint a „Jelentkezem” gombra, a böngésző új kérést indít (a 2.3 lecke szerint POST-tal).
Mindhárom lépés ugyanazt a formát használja: kezdősor, fejlécek, törzs. Ez a közös forma a HTTP ereje.
Gyakori tévhitek
Állítás
Pontosítás
„A HTTP csak HTML-oldalakhoz kell.”
Képek, adatok és más erőforrások is továbbíthatók vele.
„Egy oldal megnyitása egyetlen kérés.”
A dokumentum további erőforráskéréseket indíthat.
„A 200 azt jelenti, hogy minden rendben van.”
Csak a HTTP-szintű sikert jelzi.
„A HTTPS egy másik kérés–válasz modell.”
Ugyanaz a HTTP, védett kapcsolaton.
„A szerver emlékszik rám az előző kérésből.”
A HTTP állapotmentes; az emlékezést külön megoldások adják.
Röviden
A HTTP közös üzenetformátum a kliens és a szerver között.
Kérés: kezdősor, fejlécek, üres sor, opcionális törzs. Válasz: állapotsor, fejlécek, üres sor, opcionális törzs.
A 200 HTTP-szintű siker, nem feltétlenül üzleti siker.
Egy oldal betöltése több kérésből áll.
A HTTP állapotmentes.
Ellenőrző kérdések
Milyen részekből áll egy HTTP-kérés?
Mire való a Host fejléc?
Miért indít a böngésző több kérést egyetlen oldal megnyitásakor?
A HTTP-kérés és -válasz
Célok
A lecke végére el tudod olvasni egy HTTP-kérés és -válasz részeit, meg tudod mondani, mi a kezdősor, a fejléc és a törzs szerepe, és érted, miért nem egyetlen kérésből áll egy oldal megnyitása.
Miért kell közös üzenetformátum?
A böngésző és a szerver sosem találkozik előre egyeztetve: a böngészőt egy cég írta, a szervert egy másik, és mégis pontosan értik egymást. Ez csak úgy lehetséges, ha az üzenetek formája szabványos. A HTTP ezt a közös formát adja meg: mit kell tartalmaznia egy kérésnek, és milyen részekből áll a válasz.
A HTTP állapotmentes (stateless): minden kérést önállóan kezel, a szerver a protokoll szintjén nem emlékszik arra, mit kértek korábban. Hogy mégis „bejelentkezve maradunk”, azt a 7. fejezet magyarázza.
Egy oldal megnyitása
A hallgató megnyitja a
https://kurzuspont.example/kurzusok/webprogcímet. A böngésző kliensként kérést küld, a szerver választ ad:sequenceDiagram actor H as Hallgató participant B as Böngésző participant S as Webes szolgáltatás H->>B: Kurzusoldal megnyitása B->>S: HTTP-kérés az erőforrásért S-->>B: HTTP-válasz B-->>H: Eredmény megjelenítéseA HTTP-t nem csak böngésző használja: mobilalkalmazás, parancssori eszköz vagy másik szerver is küldhet HTTP-kérést. A szerepek mindig a konkrét üzenetváltásra vonatkoznak.
A kérés részei
A következő egy valódi,
curlparancssori eszközzel küldött kérés. A kimenet a gépen futó kipróbáló szerverről származik, amely a Kurzuspont egy kis modellje; a>jelű sorok a kimenő kérést, a<jelű sorok a válasz fejlécét mutatják:A kérés három részre tagolható:
GET), a cél útvonala és lekérdezése, a HTTP-verzió.Hostmegmondja, melyik hosztnak szól a kérés (így egy gép több nevet is kiszolgálhat), aUser-Agenta klienst azonosítja, azAccepta kívánt válaszformátumot jelzi.A válasz részei
A válasz felépítése hasonló:
200) és rövid szöveg (OK). A státuszkódokat a 2.4 lecke tárgyalja.Content-Typea törzs formátumát adja meg, aDatea válasz idejét.A
200csak azt jelenti, hogy a HTTP-kérés protokollszinten sikeres volt, nem azt, hogy minden üzleti szempontból is rendben van.flowchart TB subgraph Kérés K1[Kezdősor: metódus, cél, verzió] --> K2[Fejlécek] K2 --> K3[Üres sor] K3 --> K4[Törzs, ha van] end subgraph Válasz V1[Állapotsor: verzió, státuszkód] --> V2[Fejlécek] V2 --> V3[Üres sor] V3 --> V4[Törzs, ha van] endEgy oldalhoz több kérés tartozhat
A felhasználó egy oldalt lát, de a kezdeti HTML további erőforrásokra hivatkozhat: stíluslapokra, képekre, betűkészletekre, programokra. A böngésző ezeket külön HTTP-kérésekkel tölti le. Egy oldal megnyitása tehát nem feltétlenül egyetlen párbeszéd.
flowchart LR H[HTML kérése] --> D[HTML-válasz] D --> C[Stíluslap kérése] D --> K[Kép kérése] D --> J[Program kérése]A külön kérések ugyanahhoz vagy más szolgáltatásokhoz is mehetnek. A böngészők fejlesztői eszközeiben (Chrome, Firefox, Edge és a Safari is rendelkezik ilyennel) található hálózati panel (Network) pontosan ezt a listát mutatja; érdemes egyszer megnézni, hány kérésből áll egy ismert oldal betöltése.
HTTP és HTTPS
A címben a
http://vagyhttps://az elérés módját jelzi. A HTTPS ugyanaz a HTTP, de védett (titkosított és hitelesített) kapcsolaton. A kérés–válasz alapminta nem változik, csak a kapcsolat védett. A védelem működését és határait a 4. fejezet tárgyalja. A HTTPS megléte önmagában nem bizonyítja, hogy a tartalom igaz vagy a szolgáltató megbízható.Végigvezetett példa: a kurzusoldal betöltése
A Kurzuspont kurzusoldalának betöltése így zajlik:
GET /kurzusok/webprogkérést küld; a szerver200-as választ ad a HTML-lel.GETkérést küld.POST-tal).Mindhárom lépés ugyanazt a formát használja: kezdősor, fejlécek, törzs. Ez a közös forma a HTTP ereje.
Gyakori tévhitek
Röviden
200HTTP-szintű siker, nem feltétlenül üzleti siker.Ellenőrző kérdések
Hostfejléc?Tanulási források