Linux Professional Institute Learning Logo.
Ugrás a fő tartalomra
  • Főoldal
    • Minden erőforrás
    • LPI Tananyagok
    • Legyen ön is közreműködő
    • Kiadói partnereink
    • Legyen Ön is kiadói partnerünk
    • Rólunk
    • GYIK
    • Külső munkatársak
    • Kapcsolat
  • LPI.org
031.3 Lecke 1
Témakör 031: Szoftverfejlesztés és webtechnológiák
031.1 A szoftverfejlesztés alapjai
  • 031.1 Lecke 1
031.2 A webes alkalmazások architektúrája
  • 031.2 Lecke 1
031.3 A HTTP alapja
  • 031.3 Lecke 1
Témakör 032: A HTML-dokumentum jelölései
032.1 A HTML-dokumentum szerkezete
  • 032.1 Lecke 1
032.2 A HTML-dokumentumok hierarchiája és szemantikája
  • 032.2 Lecke 1
032.3 HTML referenciák és beágyazott erőforrások
  • 032.3 Lecke 1
032.4 A HTML űrlapok
  • 032.4 Lecke 1
Témakör 033: CSS - A tartalom formázása
033.1 CSS alapok
  • 033.1 Lecke 1
033.2 CSS szelektorok és a formázás alkalmazása
  • 033.2 Lecke 1
033.3 CSS formázás
  • 033.3 Lecke 1
033.4 CSS Dobozmodell és elrendezés
  • 033.4 Lecke 1
Témakör 034: JavaScript programozás
034.1 JavaScript végrehajtás és szintaxis
  • 034.1 Lecke 1
034.2 JavaScript adatstruktúrák
  • 034.2 Lecke 1
034.3 JavaScript vezérlési struktúrák és funkciók
  • 034.3 Lecke 1
  • 034.3 Lecke 2
034.4 A weboldal tartalmának és formázásának módosítása JavaScripttel
  • 034.4 Lecke 1
Témakör 035: NodeJS szerverprogramozás
035.1 NodeJS alapok
  • 035.1 Lecke 1
035.2 NodeJS Express alapok
  • 035.2 Lecke 1
  • 035.2 Lecke 2
035.3 SQL alapok
  • 035.3 Lecke 1
How to get certified
  1. Témakör 031: Szoftverfejlesztés és webtechnológiák
  2. 031.3 A HTTP alapja
  3. 031.3 Lecke 1

031.3 Lecke 1

Tanúsítvány:

Web Development Essentials

Verzió:

1.0

Témakör:

031 Szoftverfejlesztés és webtechnológiák

Fejezet:

031.3 A HTTP alapjai

Lecke:

1/1

Bevezetés

A HyperText Transfer Protocol (HTTP) határozza meg, hogy egy kliens hogyan kér egy adott erőforrást a szervertől. Működési elve igen egyszerű: a kliens létrehoz egy kérést, amely azonosítja a szükséges erőforrást, és ezt az üzenetet a hálózaton keresztül továbbítja a kiszolgálónak. A HTTP-szerver pedig kiértékeli, hogy honnan kell kinyerni a kért erőforrást, és válaszüzenetet küld vissza a kliensnek, ami tartalmazza a kért erőforrás adatait, valamint magát az erőforrást.

Pontosabban, a HTTP azon szabályok összessége, amelyek meghatározzák, hogy az ügyfélalkalmazás hogyan formázza a kiszolgálónak küldött request (kérés) üzeneteket. A kiszolgáló ezután a HTTP-szabályokat követve értelmezi a kérést és formázza a reply (válasz) üzeneteket. A HTTP-üzenetek a kért tartalom kérésén vagy továbbításán kívül további információkat tartalmaznak az érintett ügyfélről és kiszolgálóról, magáról a tartalomról, sőt annak elérhetetlenségéről is. Ha egy erőforrás nem küldhető el, a válaszban egy kód megmagyarázza az elérhetetlenség okát, és ha lehetséges, jelzi, hogy az erőforrás hová került.

Az üzenetnek az a része, amely meghatározza az erőforrás adatait és egyéb kontextusinformációkat, az üzenet fejléce (header). A fejlecet követő részt, amely a megfelelő erőforrás tartalmát tartalmazza, az üzenet payload-jának nevezzük. Mind a kérési, mind a válaszüzeneteknek lehet payloadja, de a legtöbb esetben csak a válaszüzenetnek van.

A kliensoldali kérés

A kliens és a szerver közötti HTTP-adatcsere első szakaszát a kliens kezdeményezi, amikor kérést küld a szervernek. Vegyünk például egy gyakori böngészőfeladatot: egy HTML-oldal betöltése például a https://learning.lpi.org/en/ oldalnak otthont adó szerverről. A cím, vagyis az URL, több fontos információt is tartalmaz. Ebben a konkrét példában három információ is megjelenik:

  • A protokoll: HyperText Transfer Protocol Secure (https), a HTTP titkosított változata.

  • A webtárhely hálózati neve (learning.lpi.org)

  • A kért erőforrás helye a szerveren (az /en/ mappa—​ebben az esetben a honlap angol nyelvű változata).

Note

Az egységes erőforrás-helymeghatározó (Uniform Resource Locator - URL) egy olyan cím, amely egy internetes erőforrásra mutat. Ez az erőforrás általában egy távoli kiszolgálóról másolható fájl, de az URL-ek dinamikusan generált tartalmakat és adatfolyamokat is jelölhetnek.

Hogyan kezeli a kliens az URL-t?

A szerverrel való kapcsolatfelvétel előtt a kliensnek át kell alakítania a learning.lpi.org címet a megfelelő IP-címre. A kliens egy másik internetes szolgáltatást, a Domain Name System (DNS)-t használja, hogy egy vagy több előre meghatározott DNS-kiszolgálótól lekérje egy állomásnév IP-címét (a DNS-kiszolgálókat általában az internetszolgáltató (ISP) határozza meg automatikusan).

A szerver IP-címével a kliens megpróbál csatlakozni a HTTP vagy HTTPS porthoz. A hálózati portok a Transmission Control Protocol (TCP) által meghatározott azonosítószámok, amelyekkel a kliens/szerver kapcsolaton belül a különböző kommunikációs csatornák összekapcsolhatók és azonosíthatók. Alapértelmezés szerint a HTTP-szerverek a 80-as (HTTP) és a 443-as (HTTPS) TCP-porton fogadják a kéréseket.

Note

A webes alkalmazások más protokollokat is használnak a kliens/szerver kommunikáció megvalósítására. Az audió- és videóhívásokhoz például célszerűbb a WebSocket-ek használata, ami egy alacsonyabb szintű protokoll, amely a HTTP-nél hatékonyabb az adatfolyamok mindkét irányú átvitelére.

A kliens által a szervernek küldött kérési üzenet formátuma megegyezik a HTTP és a HTTPS esetében. A HTTPS-t már szélesebb körben használják, mint a HTTP-t, mivel a kliens és a szerver közötti összes adatcsere titkosítva van, ami nyilvános hálózatok esetén elengedhetetlen az adatvédelem és a biztonság garantálásához. A titkosított kapcsolat a kliens és a szerver között még a HTTP-üzenetek cseréje előtt létrejön a Transport Layer Security (TLS) kriptográfiai protokoll segítségével. Ezáltal az összes HTTPS-kommunikáció a TLS által egységbezárva történik. A titkosítás feloldása után a HTTPS-en keresztül továbbított kérés vagy válasz nem különbözik a kizárólag HTTP-n keresztül továbbított kéréstől vagy választól.

Az URL harmadik elemét, az /en/-t a szerver a kért erőforrás helyeként vagy útvonalaként értelmezi. Ha az URL-ben nem adjuk meg az elérési utat, akkor az alapértelmezett / helyet fogja használni. A HTTP-kiszolgálók legegyszerűbb megvalósítása az URL-ekben szereplő elérési utakat a kiszolgálót futtató fájlrendszeren lévő fájlokkal társítja, de ez csak egy a kifinomultabb HTTP-kiszolgálókon rendelkezésre álló számos lehetőség közül.

A kérés üzenete

A HTTP az ügyfél és a kiszolgáló között már létrehozott, általában TCP-ben megvalósított és TLS-sel titkosított kapcsolaton keresztül működik. Valójában amint a szerver által támasztott követelményeknek megfelelő kapcsolat készen áll, egy egyszerű szövegként kézzel begépelt HTTP-kérelem is generálhatja a szerver válaszát. A gyakorlatban azonban a programozóknak ritkán kell rutinokat implementálniuk a HTTP-üzenetek összeállításához, mivel a legtöbb programozási nyelv olyan mechanizmusokat biztosít, amelyek automatizálhatják a HTTP-üzenet elkészítését. A példában szereplő URL, a https://learning.lpi.org/en/ esetén a lehető legegyszerűbb kérési üzenet a következő tartalmú lenne:

GET /en/ HTTP/1.1
Host: learning.lpi.org
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0
Accept: text/html

Az első sor első szava a HTTP metódust azonosítja. Meghatározza, hogy a kliens milyen műveletet szeretne végrehajtani a szerveren. A GET metódus informálja a szervert, hogy a kliens az /en/ után következő erőforrást kéri. A kliens és a szerver is támogathatja a HTTP-protokoll több verzióját, ezért az adatcserében elfogható verziót is megadjuk az első sorban: HTTP/1.1.

Note

A HTTP protokoll legújabb verziója a HTTP/2. Egyéb különbségek mellett a HTTP/2-ben írt üzeneteket bináris struktúrában kódolják, míg a HTTP/1.1 esetén az üzeneteket egyszerű szövegként küldik el. Ez a változás optimalizálja az adatátviteli sebességet, de az üzenetek tartalma alapvetően nem változik.

A fejléc az első sor után több sort is tartalmazhat, hogy kontextusba helyezze és segítsen azonosítani a szervernek küldött kérést. A Host fejlécmező például feleslegesnek tűnhet, mivel a szerver hosztját a kliens nyilvánvalóan azonosította a kapcsolat létrehozásához és ésszerű azt feltételezni, hogy a szerver ismeri a saját identitását. Ennek ellenére fontos, hogy a kérés fejlécében tájékoztassuk a hosztot a várható hosztnévről, mivel általános gyakorlat, hogy ugyanazt a HTTP-kiszolgálót egynél több weboldal tárolására használják. (Ebben az esetben az egyes konkrét hosztokat virtuális hosztnak nevezzük.) Ezért a Host mezőt a HTTP-kiszolgáló arra használja, hogy azonosítsa, melyikre vonatkozik a kérés.

A User-Agent fejlécmező a kérést végző kliensprogram adatait tartalmazza. Ezt a mezőt a szerver arra használja, hogy a választ egy adott kliens igényeihez igazítsa, de gyakrabban használják arra, hogy statisztikát készítsenek a szervert használó kliensekről.

Az Accept mező közvetlenebb értékű, mert tájékoztatja a szervert a kért erőforrás formátumáról. Ha a kliensnek nem fontos az erőforrás formátuma, az Accept mezőben megadható a */* formátum.

Sok más fejlécmező is használható egy HTTP-üzenetben, de a fenti példában bemutatottak elegendőek ahhoz, hogy erőforrást kérjünk a szervertől.

A kérés fejlécében szereplő mezőkön kívül a kliens más kiegészítő adatokat is megadhat a szervernek küldött HTTP-kérelemben. Ha ezek az adatok csak egyszerű szöveges paraméterekből állnak, a name=value formátumban, akkor a GET-metódus útvonalához adhatók hozzá. A paraméterek az elérési útvonalba egy kérdőjel után ágyazódnak be és az és-jel (&) karakterekkel kerülnek elválasztásra:

GET /cgi-bin/receive.cgi?name=LPI&email=info@lpi.org HTTP/1.1

A fenti példában a /cgi-bin/receive.cgi a kiszolgálón lévő szkript elérési útvonala, amely feldolgozza és esetleg fel is használja a kérés útvonalából kapott name és email paramétereket. A mezőknek megfelelő name=LPI&email=info@lpi.org formátumú sztring a query string, amelyet a kérést fogadó HTTP-kiszolgáló ad a receive.cgi szkriptnek.

Ha az adatok nem csak rövid szöveges mezőkből állnak, akkor célszerűbb az üzenet hasznos részében (payload) elküldeni. Ebben az esetben a HTTP POST módszert kell használni, hogy a szerver megkapja és feldolgozza az üzenet hasznos részét a kérés fejlécében megadott specifikációnak megfelelően. A POST metódus használata esetén a kérés fejlécének meg kell adnia a következőként elküldendő payload méretét és a törzs (body) formázási módját:

POST /cgi-bin/receive.cgi HTTP/1.1
Host: learning.lpi.org
Content-Length: 1503
Content-Type: multipart/form-data; boundary=------------------------405f7edfd646a37d

A Content-Length mező a payload bájtban kifejezett méretét, a Content-Type mező pedig a formátumát jelzi. A multipart/form-data formátum a POST módszert használó hagyományos HTML űrlapoknál leggyakrabban használt formátum. Ebben a formátumban a kérés payloadjába minden egyes beillesztett mezőt a boundary kulcsszó által jelzett kóddal választanak el. A POST metódust csak akkor szabad használni, ha szükséges, mivel valamivel nagyobb adatmennyiséget használ, mint egy GET módszerrel végrehajtott egyenértékű kérés. Mivel a GET közvetlenül a kérés fejlécében küldi el a paramétereket, a teljes adatcsere kisebb késleltetéssel jár, mivel az üzenettörzs továbbításához nem lesz szükség egy további kapcsolati szakaszra.

A válasz fejléce

Miután a HTTP-szerver megkapta a kérés fejlécét, a szerver válaszüzenetet küld vissza a kliensnek. Egy HTML-kérés jellemzően ilyen válaszfejléccel rendelkezik:

HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 18170
Content-Type: text/html
Date: Mon, 05 Apr 2021 13:44:25 GMT
Etag: "606adcd4-46fa"
Last-Modified: Mon, 05 Apr 2021 09:48:04 GMT
Server: nginx/1.17.10

Az első sor a válaszüzenetben használt HTTP-protokoll verzióját adja meg, amelynek meg kell egyeznie a kérés fejlécében használt verzióval. Ezután, szintén az első sorban, a válasz állapotkódja jelenik meg, amely azt jelzi, hogy a kiszolgáló hogyan értelmezte és generálta a kérésre adott választ.

A státuszkód egy háromjegyű szám, ahol a bal szélső számjegy határozza meg a válasz osztályát. Az állapotkódoknak öt osztálya van, 1-5-ig számozva, amelyek mindegyike a kiszolgáló által végrehajtott művelet típusát jelzi:

1xx (Tájékoztató)

A kérés beérkezett, a folyamat folytatódik.

2xx (Sikeres)

A kérés fogadva, megértve és elfogadva lett.

3xx (Átirányítás)

További lépéseket kell tenni a kérés befejezéséhez.

4xx (Kliensoldali hiba)

A kérés rossz szintaxist tartalmaz vagy nem teljesíthető.

5xx (Szerveroldali hiba)

A szerver nem tudott teljesíteni egy látszólag érvényes kérést.

A második és a harmadik számjegy további részletek feltüntetésére szolgál. A 200-as kód például azt jelzi, hogy a kérés minden probléma nélkül megválaszolható. A példában látható módon a válaszkódot (OK) követő rövid szöveges leírás is megadható. Néhány specifikus kód különösen érdekes annak érdekében, hogy a HTTP-kliens kedvezőtlen helyzetekben is hozzáférhessen az erőforráshoz, vagy hogy sikertelen kérés esetén segítsen azonosítani a hiba okát:

301 Moved Permanently

A célerőforráshoz új állandó URL-t rendeltek, amelyet a válaszban található Location fejléc mező ad meg.

302 Found

A célerőforrás ideiglenesen egy másik URL alatt található.

401 Unauthorized

A kérés nem került elfogadásra, mivel nem rendelkezik a célerőforrás érvényes hitelesítési adataival.

403 Forbidden

A Forbidden válasz azt jelzi, hogy bár a kérés érvényes, a kiszolgáló úgy van beállítva, hogy ne engedje azt elérni.

404 Not Found

A kiindulási szerver nem talált aktuális reprezentációt a célerőforráshoz, vagy nem hajlandó közölni, hogy létezik ilyen.

500 Internal Server Error

A szerver olyan váratlan körülménybe ütközött, amely megakadályozta a kérés teljesítésében.

502 Bad Gateway

A szerver, miközben átjáróként (gateway) vagy proxyként működött, érvénytelen választ kapott egy olyan bejövő szervertől, amelyhez a kérés teljesítésének kísérlete során hozzáfért.

Bár ezek azt jelentik, hogy a kérést nem lehetett teljesíteni, a "4xx" és "5xx" állapotkódok legalább azt jelzik, hogy a HTTP-kiszolgáló fut és képes kéréseket fogadni. A 4xx kódok a kliens részéről igényelnek intézkedést, mivel az URL vagy a hitelesítő adatok helytelenek. Ezzel szemben az 5xx kódok azt jelzik, hogy a szerveroldalon valami nem stimmel. Ezért a webes alkalmazások kontextusában az állapotkódok e két osztálya azt jelzi, hogy a hiba forrása magában az alkalmazásban van, akár kliens, akár szerver, nem pedig a mögöttes infrastruktúrában.

Statikus és dinamikus tartalom

A HTTP-kiszolgálók két alapvető mechanizmust használnak a kliens által kért tartalom teljesítésére. Az első mechanizmus statikus tartalmat biztosít: azaz a kérési üzenetben megadott útvonal megfelel a kiszolgáló helyi fájlrendszerében lévő fájlnak. A második mechanizmus dinamikus tartalmat biztosít: azaz a HTTP-kiszolgáló továbbítja a kérést egy másik programnak - valószínűleg egy szkriptnek -, amely különböző forrásokból, például adatbázisokból és más fájlokból állítja össze a választ.

Bár különböző HTTP-kiszolgálók léteznek, mindegyik ugyanazt a HTTP kommunikációs protokollt használja, és többé-kevésbé ugyanazokat a konvenciókat alkalmazza. Egy olyan alkalmazás, amelynél nem merül fel különleges igény, bármilyen hagyományos szerverrel, például Apache vagy NGINX szerverrel megvalósítható. Mindkettő képes dinamikus tartalom generálására és statikus tartalom szolgáltatására, de enyhe különbségek vannak a konfigurációjukban.

A kiszolgálandó statikus fájlok helyét például az Apache és az NGINX különböző módon határozza meg. A konvenció az, hogy ezeket a fájlokat egy erre a célra létrehozott könyvtárban tartják, amelynek neve a hoszthoz kapcsolódik, például /var/www/learning.lpi.org/. Az Apache-ban ezt az elérési utat a DocumentRoot /var/www/learning.lpi.org konfigurációs utasítás határozza meg a virtuális hosztot definiáló szakaszban. Az NGINX-ben a használt irányelv a root /var/www/learning.lpi.org a konfigurációs fájl server szakaszában.

Bármelyik szervert is választjuk, a /var/www/learning.lpi.org/ fájlokat a HTTP-n keresztül szinte ugyanúgy fogják kiszolgálni. A válaszfejléc néhány mezője és azok tartalma eltérő lehet a két szerver esetén, de az olyan mezőknek, mint a Content-Type, jelen kell lenniük a válaszfejlécben és minden szerveren konzisztensnek kell lenniük.

Cachelés (gyorsítótárazás)

A HTTP-t úgy tervezték, hogy bármilyen típusú internetkapcsolaton működjön, legyen az gyors vagy lassú. Ezenkívül a legtöbb HTTP-forgalomnak számos hálózati csomóponton kell áthaladnia az internet elosztott felépítése miatt. Ennek eredményeképpen fontos valamilyen tartalmi gyorsítótárazási stratégia alkalmazása, hogy elkerülhető legyen a korábban letöltött tartalom felesleges átvitele. A HTTP-adattovábbítás két alapvető gyorsítótár-típussal működhet: megosztott és privát.

A megosztott gyorsítótárat nem csak egy kliens használja. Egy nagy tartalomszolgáltató például használhat földrajzilag elosztott szervereken lévő gyorsítótárakat, így a kliensek a hozzájuk legközelebbi szerverről kapják meg az adatokat. Ha egy kliens kérést indított, és a válaszát egy megosztott gyorsítótárban tárolták, akkor az ugyanazon a területen ugyanezt a kérést intéző többi kliens is megkapja a gyorsítótárban tárolt választ. A privát gyorsítótárat maga a kliens hozza létre a saját kizárólagos használatára. Ez az a fajta gyorsítótárazási mód, amelyet a webböngésző a képek, CSS-fájlok, JavaScript vagy a HTML-dokumentum esetében végez, így ezeket nem kell újra letölteni, ha a közeljövőben szükség van rájuk.

Note

Nem minden HTTP-kérést kell gyorsítótárazni. A POST-metódust használó kérés például kizárólag az adott kéréshez kapcsolódó választ jelent, így a válasz tartalmát nem szabad újra felhasználni. Alapértelmezés szerint csak a GET-metódust használó kérésekre adott válaszok kerülnek gyorsítótárba. Továbbá csak a 200 (OK), 206 (részleges tartalom), 301 (véglegesen áthelyezve) és 404 (nem található) státuszkóddal rendelkező válaszok alkalmasak a gyorsítótárazásra.

Mind a megosztott, mind a privát gyorsítótár-stratégia a HTTP fejlécek segítségével szabályozza a letöltött tartalom gyorsítótárazásának módját. A privát gyorsítótár esetében a kliens megnézi a válaszfejlécet, és ellenőrzi, hogy a helyi gyorsítótárban lévő tartalom még mindig megfelel-e az aktuális távoli tartalomnak. Ha igen, a kliens lemond a válasz payloadjának átvételéről, és a helyi verziót használja.

A gyorsítótárazott erőforrás érvényessége többféleképpen is értékelhető. A szerver megadhat egy lejárati dátumot a válaszfejlécben az első kérésnél, így a kliens a lejárati idő végén eldobja a gyorsítótárazott erőforrást, és a frissített változat megszerzéséhez újra lekérdezi azt. A szerver azonban nem mindig tudja meghatározni az erőforrás lejárati dátumát, ezért az erőforrás verziójának azonosítására általában az ETag válaszfejlécmezőt használják, például Etag: "606adcd4-46fa".

Annak ellenőrzéséhez, hogy egy gyorsítótárazott erőforrás frissítésre szorul-e, a kliens csak a válaszfejlécet kéri le a szervertől. Ha az ETag mező megegyezik a helyileg tárolt változatéval, a kliens újra felhasználja a gyorsítótárazott tartalmat. Ellenkező esetben az erőforrás frissített tartalma letöltésre kerül a szerverről.

HTTP munkamenetek

Egy hagyományos weboldalon vagy webes alkalmazásban a munkamenetvezérlést kezelő funkciók a HTTP-fejléceken alapulnak. A szerver nem feltételezheti például, hogy az azonos IP-címről érkező összes kérés ugyanattól a klienstől származik. A leghagyományosabb módszer, amely lehetővé teszi a szerver számára, hogy a különböző kéréseket egyetlen klienshez rendelje, a cookiek (sütik) használata. A süti egy azonosító címke, amelyet a szerver a HTTP fejlécben ad meg a kliensnek.

A sütik lehetővé teszik a szerver számára, hogy megőrizze az adott kliensre vonatkozó információkat, még akkor is, ha a klienst használó személy nem azonosítja magát kifejezetten. A sütik segítségével olyan munkamenetek valósíthatók meg, amelyekben a bejelentkezések, bevásárlókosarak, preferenciák stb., megmaradnak a különböző kérések között, amelyeket ugyanahhoz a szerverhez intéznek, amely ezeket a kéréseket biztosította. A sütiket a felhasználó böngészésének nyomon követésére is használják, ezért fontos, hogy a küldésük előtt hozzájárulást kérjenek.

A kiszolgáló a "Set-Cookie" mező segítségével állítja be a sütit a válaszfejlécben. A mező értéke egy kulcs=érték pár, amelyet úgy választanak ki, hogy egy adott klienshez kapcsolódó attribútumot képviseljen. A szerver például létrehozhat egy azonosítószámot egy olyan kliens számára, aki először kér egy erőforrást, és ezt a válaszfejlécben átadhatja a kliensnek:

HTTP/1.1 200 OK
Accept-Ranges: bytes
Set-Cookie: client_id=62b5b719-fcbf

Ha a kliens engedélyezi a sütik használatát, akkor az ugyanahhoz a kiszolgálóhoz érkező új kérelmek fejlécében szerepel a cookie-mező:

GET /en/ HTTP/1.1
Host: learning.lpi.org
Cookie: client_id=62b5b719-fcbf

Ennek az azonosítószámnak a segítségével a szerver lekérdezheti a kliens speciális definícióit, és testreszabott választ generálhat. Lehetőség van egynél több Set-Cookie mező használatára is, hogy különböző sütiket adjon át ugyanannak a kliensnek. Ily módon egynél több definíció is megőrizhető a kliensoldalon.

A sütik adatvédelmi problémákat és potenciális biztonsági réseket is felvetnek, mivel fennáll annak a lehetősége, hogy átkerülhetnek egy másik klienshez, akit a szerver az eredeti kliensként azonosít. A munkamenetek megőrzésére használt sütik hozzáférést biztosíthatnak az eredeti kliens bizalmas információihoz. Ezért nagyon fontos, hogy a kliensek helyi védelmi mechanizmusokat alkalmazzanak, hogy megakadályozzák a sütik jogosulatlan eltávolítását és újrafelhasználását.

Gyakorló feladatok

  1. Melyik HTTP-metódust hasznája a következő üzenet?

    POST /cgi-bin/receive.cgi HTTP/1.1
    Host: learning.lpi.org
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0
    Accept: */*
    Content-Length: 27
    Content-Type: application/x-www-form-urlencoded
  2. Ha egy HTTP-kiszolgáló több weboldalt is tárol, hogyan tudja azonosítani, hogy melyikhez szól a kérés?

  3. Milyen paramétert adunk meg az alábbi URL lekérdezésben https://www.google.com/search?q=LPI?

  4. Miért nem alkalmas az alábbi HTTP-kérés gyorsítótárazásra?

    POST /cgi-bin/receive.cgi HTTP/1.1
    Host: learning.lpi.org
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0
    Accept: */*
    Content-Length: 27
    Content-Type: application/x-www-form-urlencoded

Gondolkodtató feladatok

  1. Hogyan lehet a böngésző segítségével nyomonkövetni egy HTML-oldal kéréseit és válaszait?

  2. A statikus tartalmat nyújtó HTTP-kiszolgálók általában a kért elérési utat a kiszolgáló fájlrendszerében lévő fájlhoz rendelik. Mi történik, ha a kérelemben szereplő elérési út egy könyvtárra mutat?

  3. A HTTPS-en keresztül küldött fájlok tartalmát titkosítással védik, így a kliens és a szerver közötti számítógépek nem tudják elolvasni azokat. Ennek ellenére ezek a köztes számítógépek azonosíthatják-e, hogy a kliens milyen erőforrást kért a szervertől?

Összefoglalás

Ebben a leckében a HTTP alapjaival foglalkoztunk, ez a fő protokoll, amelyet a kliensalkalmazások használnak erőforrások kérésére a webszerverektől. Ez a lecke a következő fogalmakat veszi át:

  • Kérési üzenetek, fejlécmezők és metódusok.

  • Válasz státuszkódok.

  • Hogyan generálnak a HTTP-kiszolgálók válaszokat.

  • A gyorsítótárazáshoz és a munkamenet-kezeléshez hasznos HTTP-funkciók.

Válaszok a gyakorló feladatokra

  1. Melyik HTTP-metódust hasznája a következő üzenet?

    POST /cgi-bin/receive.cgi HTTP/1.1
    Host: learning.lpi.org
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0
    Accept: */*
    Content-Length: 27
    Content-Type: application/x-www-form-urlencoded

    A POST metódust.

  2. Ha egy HTTP-kiszolgáló több weboldalt is tárol, hogyan tudja azonosítani, hogy melyikhez szól a kérés?

    A kérés fejlécében a "Host" mező azonosítja a weboldalt.

  3. Milyen paramétert adunk meg az alábbi URL lekérdezésben https://www.google.com/search?q=LPI?

    A q nevű paramétert, az LPI értékkel.

  4. Miért nem alkalmas az alábbi HTTP-kérés gyorsítótárazásra?

    POST /cgi-bin/receive.cgi HTTP/1.1
    Host: learning.lpi.org
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0
    Accept: */*
    Content-Length: 27
    Content-Type: application/x-www-form-urlencoded

    Mivel a POST-metódussal végrehajtott kérések írási műveletet jelentenek a szerveren, nem szabad gyorsítótárba helyezni őket.

Válaszok a gondolkodtató feladatokra

  1. Hogyan lehet a böngésző segítségével nyomonkövetni egy HTML-oldal kéréseit és válaszait?

    Minden népszerű böngésző kínál fejlesztőeszközöket, amelyek többek között képesek megmutatni az aktuális oldal által végrehajtott összes hálózati tranzakciót.

  2. A statikus tartalmat nyújtó HTTP-kiszolgálók általában a kért elérési utat a kiszolgáló fájlrendszerében lévő fájlhoz rendelik. Mi történik, ha a kérelemben szereplő elérési út egy könyvtárra mutat?

    Ez attól függ, hogy a szerver hogyan van konfigurálva. Alapértelmezés szerint a legtöbb HTTP-kiszolgáló egy "index.html" (vagy más előre meghatározott) nevű fájlt keres ugyanabban a könyvtárban, és azt küldi válaszként. Ha a fájl nincs ott, a szerver 404 Not Found választ ad.

  3. A HTTPS-en keresztül küldött fájlok tartalmát titkosítással védik, így a kliens és a szerver közötti számítógépek nem tudják elolvasni azokat. Ennek ellenére ezek a köztes számítógépek azonosíthatják-e, hogy a kliens milyen erőforrást kért a szervertől?

    Nem, mert a kérés és a válasz HTTP fejléceit is titkosítja a TLS.

Linux Professional Insitute Inc. Minden jog fenntartva. Látogasson el a tananyagok weboldalára: https://learning.lpi.org
Ez a munka a Creative Commons Nevezd meg! - Ne add el! - Ne változtasd! 4.0 (CC BY-NC-ND 4.0) Nemzetközi lincence alapján van engedélyezve.

Következő lecke

032.1 A HTML-dokumentum szerkezete (032.1 Lecke 1)

Olvassa el a következő leckét

Linux Professional Insitute Inc. Minden jog fenntartva. Látogasson el a tananyagok weboldalára: https://learning.lpi.org
Ez a munka a Creative Commons Nevezd meg! - Ne add el! - Ne változtasd! 4.0 (CC BY-NC-ND 4.0) Nemzetközi lincence alapján van engedélyezve.

Az LPI egy non-profit szervezet.

© 2023 A Linux Professional Institute (LPI) a nyílt forráskóddal foglalkozó szakemberek globális tanúsítási szabványa és karrier-támogató szervezete. Több mint 175 000 kiadott tanúsítvánnyal, ez a világ első és legnagyobb gyártósemleges Linux és nyílt forráskódú tanúsító testülete. Az LPI a világ több mint 180 országban rendelkezik minősített szakemberekkel, számos nyelven készít vizsgasorokat, valamint több száz képzési partnere van..

Célunk, hogy mindenki számára lehetővé tegyünk gazdasági és kreatív lehetőségeket azáltal, hogy a nyílt forráskódú ismeretek és készségek tanúsítását általánosan hozzáférhetővé tesszük.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Vegye fel velünk a kapcsolatot
  • Adatvédelmi és cookie-irányelvek

Észrevett egy hibát vagy csak segíteni szeretne az oldal fejlesztésében? Kérjük, tudassa velünk.

© 1999–2023 The Linux Professional Institute Inc. Minden jog fenntartva.