# HTTP- és válaszkódok

> Hogyan működik a HTTP, mit jelentenek a státuszkódok, hol találod őket, és hogyan keresd meg egy hiba okát.

Ha működteted a webhelyet, hasznos érteni a HTTP- és válaszkódokat. A HTTP (HyperText Transfer Protocol) az a protokoll, amelyen a böngésző és a webhely adatot cserél. A válaszkódok azt mondják meg, sikerült-e a kérés, hiba történt-e, vagy további lépés kell.

Ez a fejezet haladó hibakereséshez ad segítséget. Az itt leírt lépések nem tartoznak a WooCommerce támogatási körébe, ezért ha segítség kell, forduljon képzett WordPress- és WooCommerce-fejlesztőhöz.

## A kérés és a válasz menete

A HTTP kliens-szerver modellben működik:

1. **Kapcsolat létrehozása.** Amikor beírsz egy címet a böngészőbe, vagy rákattintasz egy hivatkozásra, a böngésző megbízható (TCP) kapcsolatot létesít a címet kiszolgáló szerverrel.
2. **Kérés elküldése.** A böngésző HTTP-kérést küld, amelyben ott van a **metódus** (például GET adatlekéréshez, POST adatküldéshez), az **erőforrás útvonala** (például egy oldal vagy kép) és a **fejlécek** (böngészőtípus, támogatott tartalomformátumok, azonosítók).
3. **Feldolgozás.** A szerver feldolgozza a kérést: adatot kér le, háttérrendszerekkel dolgozik, vagy kódot futtat a dinamikus tartalomhoz.
4. **Válasz.** A szerver HTTP-választ küld: **státuszkódot** (például 200 a sikerhez, 404 a nem található oldalhoz), a **tartalmat** (például HTML) és **válaszfejléceket** (tartalomtípus, gyorsítótárazás).
5. **A kapcsolat lezárása.** A kapcsolat a fejlécektől függően bezárul, vagy nyitva marad további kérésekhez.

Egy kérés például így nézhet ki, ha megnyitod egy webhely kezdőlapját:

```http
GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml
Accept-Language: hu-HU,hu;q=0.9
Accept-Encoding: gzip, deflate
Connection: keep-alive
```

- `GET`: a metódus, amely adatot kér az erőforrástól.
- `/`: az erőforrás útvonala (itt a gyökérkönyvtár).
- `HTTP/1.1`: a protokoll verziója.
- `Host`: a szerver domainneve.
- `User-Agent`: a kérést küldő böngésző adatai.
- `Accept`: a kliens által feldolgozható tartalomtípusok.
- `Accept-Language`: a kliens nyelvi preferenciája.
- `Accept-Encoding`: a kliens által elfogadott tömörítések.
- `Connection`: azt jelzi, hogy a kapcsolat nyitva marad-e.

A szerver válasza például:

```http
HTTP/1.1 200 OK
Date: Mon, 23 Oct 2023 14:22:18 GMT
Server: Apache/2.4.1 (Unix)
Last-Modified: Wed, 20 Oct 2023 07:28:00 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 3423
Accept-Ranges: bytes
Connection: close
```

Ezután jön a lap HTML-tartalma. A fejléc sorai:

- `HTTP/1.1 200 OK`: az állapotsor, benne a protokoll verziója, a kód (200) és a szöveges megfelelője (OK): a kérés sikerült.
- `Date`: a válasz küldésének időpontja.
- `Server`: a használt szerverszoftver.
- `Last-Modified`: az erőforrás utolsó módosításának ideje.
- `Content-Type`: a válasz tartalmának típusa.
- `Content-Length`: a tartalom hossza bájtban.
- `Accept-Ranges`: azt jelzi, hogy a szerver elfogad részleges lekéréseket.
- `Connection`: azt jelzi, hogy a kapcsolat a kérés után bezárul.

## HTTPS

A HTTPS a HTTP biztonságos változata: titkosítja a böngésző és a webhely közötti adatforgalmat. SSL-tanúsítványt használ, amely biztosítja, hogy az adatok titkosak maradnak, és hogy valóban a kívánt webhellyel kommunikálsz. Ez megvédi az érzékeny adatokat a lehallgatástól.

## A státuszkódok csoportjai

A kód első számjegye az öt csoport egyikébe sorolja:

| Csoport | Jelentés |
| --- | --- |
| 1xx (tájékoztató) | A szerver megkapta a kérést, és ideiglenes válasszal folytatja a feldolgozást. |
| 2xx (sikeres) | A szerver megkapta, értelmezte és elfogadta a kérést. |
| 3xx (átirányítás) | A kérés teljesítéséhez további lépés kell, például átirányítás másik címre. |
| 4xx (kliens hiba) | A kérés hibás, vagy nem teljesíthető, például 404, ha a kért oldal nem érhető el. |
| 5xx (szerver hiba) | A szerver oldalán van a gond, és nem tudja teljesíteni a jó kérést, például 500 belső szerverhiba. |

A leggyakoribb kódok:

| Kód | Jelentés |
| --- | --- |
| 100 Continue | A szerver megkapta a kérés első részét, és várja a többit. |
| 101 Switching protocols | A kérés protokollváltást kért, és a szerver beleegyezett. |
| 200 OK | A kérés sikerült. |
| 201 Created | A szerver teljesítette a kérést, és új erőforrást hozott létre. |
| 301 Moved permanently | A kért erőforrás címe végleg megváltozott, a válasz az új címet adja. |
| 302 Found | Ideiglenes átirányítás: a következő alkalommal is az eredeti címet használd. |
| 400 Bad request | A szerver kliens oldali hiba miatt nem tudja feldolgozni a kérést. |
| 401 Unauthorized | A szükséges azonosítás hiányzik, vagy érvénytelen. |
| 403 Forbidden | A szerver értette a kérést, de megtagadja a teljesítését. |
| 404 Not found | A szerver nem találja a kért erőforrást. |
| 405 Method not allowed | A kérésben megadott metódus nem engedélyezett az erőforráshoz. |
| 408 Request timeout | A szerver időtúllépés miatt nem kapta meg a kérést. |
| 429 Too many requests | A felhasználó túl sok kérést küldött adott idő alatt. |
| 500 Internal server error | A szerver váratlan helyzetbe ütközött. |
| 501 Not implemented | A szerver nem támogatja a kérés teljesítéséhez szükséges funkciót. |
| 502 Bad gateway | A szerver érvénytelen választ kapott a felsőbb szervertől. |
| 503 Service unavailable | A szerver átmenetileg nem tudja kiszolgálni a kérést, például túlterhelés vagy karbantartás miatt. |
| 504 Gateway timeout | A szerver nem kapott időben választ a felsőbb szervertől. |

## Hol találod a hibakódot?

1. **A böngészőben.** A legtöbb böngésző a hibakódot közvetlenül az ablakban mutatja, például „404 Not Found” vagy „500 Internal Server Error”.
2. **A fejlesztői eszközökben.** A böngésző fejlesztői eszközeinek hálózat (Network) lapján minden kérés és válasz részletei látszanak, a státuszkóddal együtt. Chrome-ban, Firefoxban és Edge-ben kattints a jobb gombbal az oldalra, válaszd az „Inspect” vagy „Elemvizsgálat” parancsot, majd nyisd meg a „Network” fület. Töltsd újra az oldalt, keresd meg a hibás kérést, és kattints rá a részletekért.
3. **A szerver naplóiban.** Főleg az 5xx hibáknál hasznosak, amelyek a böngészőben nem mindig látszanak. Apache vagy Nginx szervereken a naplók gyakran a `/var/log/apache2` vagy a `/var/log/nginx` mappában vannak. Felügyelt tárhelyeken a tárhely vezérlőpultján át érheted el őket. Ha segítség kell, kérdezd a tárhelyszolgáltatót.
4. **E-mailes értesítésekben és monitorozó eszközökben.** Weboldal-figyelő szolgáltatások e-mailben vagy SMS-ben értesítenek, ha az oldal hibakódot ad vissza.

## A hiba okának keresése

Ha azonosítottad a hibát, ezeket a lépéseket követheted:

1. **Nézd meg a hibakódot.** Döntsd el, hogy kliens oldali (4xx) vagy szerver oldali (5xx) a gond. Ez megmutatja, merre keress.
2. **Gondold végig a legutóbbi változtatásokat.** Ha nemrég frissítetted az oldalt, vagy módosítottad a szerver beállításait, nézd át ezeket. Néha a korábbi beállítás visszaállítása megoldja a hibát.
3. **Nézd meg a szerver naplóit.** Részletes hibaüzeneteket és támpontokat találhatsz, főleg 5xx hibáknál.
4. **Fordulj a tárhelyszolgáltatódhoz.** Ha a hiba nem szűnik meg, és nem tudod megoldani, a tárhely olyan szerver- és hálózati problémákra is rálát, amelyek számodra nem látszanak.
5. **Állíts be figyelést.** A monitorozó eszközök azonnal jeleznek, ha HTTP-hiba lép fel, így gyorsan reagálhatsz, mielőtt a vásárlók érzékelnék.
