CodeGym/Java blog/Véletlen/3. rész. HTTP/HTTPS
John Squirrels
Szint
San Francisco

3. rész. HTTP/HTTPS

Megjelent a csoportban
Ez az anyag a "Bevezetés a vállalkozásfejlesztésbe" sorozat része. Korábbi cikkek: 3. rész. HTTP/HTTPS – 1Szia! Ma a HTTP és HTTPS protokollokról fogunk tanulni. Először azonban tisztázzunk egy pontot: az OSI-modell alkalmazási szintjén az adatok hálózaton keresztüli küldésére szolgáló protokollokról beszélünk. Talán emlékszik rá, hogy az egyik korábbi cikkben megismerhettük az OSI modellt. Ha nem emlékszik rá, itt van .

Mi az adatkommunikációs protokoll?

Ezt nevezzük megállapodás szerinti szabálykészletnek, amely lehetővé teszi a különböző szolgáltatások fejlesztői számára, hogy információkat küldjenek mások számára érthető formátumban. Például a Google Chrome segítségével információkat szerezhet a Facebookról és a Twitterről is, mert a fejlesztők a szabványos HTTP-protokoll segítségével küldik el azokat, amely lehetővé teszi a böngészője feldolgozását. Az egységes szabályok nagyon kényelmesek a szerverrészt fejlesztők számára: sok könyvtár van, amely képes az információkat konvertálni és a megfelelő protokoll segítségével elküldeni. A HTTP-t eredetileg HTML-oldalak küldésének protokolljaként tervezték. Sokáig így használták, de ma már a programozók gyakran használják karakterláncok és médiafájlok küldésére is. Általánosságban elmondható, hogy ez a protokoll általánosan elfogadott és sokoldalú, és nagyon könnyen használható. És most megvizsgáljuk, hogyan kell használni.

A HTTP felépítése

Azonnal meg kell jegyeznünk, hogy a HTTP protokoll csak szövegből áll. A legjobban ennek a szövegnek a szerkezete érdekel bennünket. Minden üzenet három részből áll:
  1. Kezdősor – Ez meghatároz néhány háztartási adatot.
  2. Fejlécek – Ezek az üzenet paramétereit írják le.
  3. Törzs – Ez az üzenet tartalma. A törzset üres sorral kell elválasztani a fejlécektől.
A HTTP protokollt arra használják, hogy kéréseket küldjenek a szervernek, és válaszokat kapjanak a szervertől. A kérések és válaszok paraméterei kissé eltérnek.

Így néz ki egy egyszerű HTTP-kérés:

GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
A startvonal a következőket jelzi:
  • GET — A kérés metódusa
  • / — A kérés elérési útja
  • HTTP/1.1 – A protokoll verziója
Aztán jönnek a fejlécek:
  • Gazdagép – Az a gazdagép, amelyhez a kérés címzett
  • User-Agent – ​​A kérést küldő ügyfél
Az üzenet törzse hiányzik. HTTP-kérésben csak a kezdősor és a "Host" fejléc szükséges. Most nézzünk mindent lépésről lépésre. A HTTP kérésnek tartalmaznia kell valamilyen metódust. Kilenc közülük van: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. A leggyakoribbak a GET és a POST. Ez a két módszer elsőre elég lesz. GET — Ez a módszer tartalmat kér a szervertől. Ennek megfelelően a GET metódusú kéréseknek nincs üzenettörzs. De ha kell, átadhat paramétereket az útvonalon (a kezdősorban) a következő formátumban:
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
ahol a codegym.cc a gazdagép, a /send a kérés elérési útja, és ? egy elválasztó, amely azt jelzi, hogy a lekérdezési paraméterek következnek. A végén a kulcs-érték párok ("kulcs=érték") vannak felsorolva, és jellel elválasztva. POST – Ez a módszer információkat tesz közzé a szerveren. A POST kérés különféle információkat küldhet: paramétereket "kulcs=érték" párok formájában, JSON-t, HTML-kódot vagy akár fájlokat. Minden információ az üzenet törzsében kerül elküldésre. Például:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc

{
  "Id": 12345,
  "User": "John"
}
A kérés a codegym.cc/user/create/json címre kerül elküldésre, a protokoll verziója pedig HTTP/1.1. Az „Elfogadás” azt a válaszformátumot jelzi, amelyet az ügyfél vár. A "Content-Type" a kérésben elküldött üzenet törzsének formátumát jelzi. A "Tartalom hossza" a karakterek száma a törzsben. Egy HTTP-kérelem sok különböző fejlécet tartalmazhat. További információért tekintse meg a protokoll specifikációját .

HTTP válaszok

A kérés beérkezése után a szerver feldolgozza azt, és választ küld a kliensnek:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98

<html>
  <head>
    <title>An Example Page</title>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
A válasz kezdősora tartalmazza a protokoll verzióját (HTTP/1.1), az állapotkódot (200) és az állapotleírást (OK). A fejlécek tartalmazzák a tartalom típusát és hosszát. A válasz törzse HTML-kódot tartalmaz, amelyet a böngésző HTML-oldalként jelenít meg.

Válasz állapotkódok

Az üzenet törzsét és fejléceit illetően minden világos, de az állapotkódokról szóljunk néhány szót. A válaszállapotkódok mindig három számjegyből állnak. A kód első számjegye a válasz kategóriáját jelzi:
  • 1xx — Tájékoztató. A kérés beérkezett. A szerver készen áll a folytatásra.
  • 2xx – Sikeres. A kérést megkaptuk, megértették és feldolgoztuk.
  • 3xx — Átirányítás. A kérelem feldolgozásához további műveleteket kell végrehajtani.
  • 4xx — Ügyfélhiba. A kérés hibákat tartalmaz, vagy nem felel meg a protokollnak.
  • 5xx — Szerverhiba. A kérés helyesen lett összeállítva, de a szerver nem tudta feldolgozni.
A kód második és harmadik számjegye konkrétabb választ jelez. Például:
  • 200 OK — A kérést megkaptuk és sikeresen feldolgoztuk.
  • 201 Létrehozva — A kérést megkaptuk és sikeresen feldolgoztuk, ami új erőforrás vagy példány létrehozását eredményezte.
  • 301 Véglegesen áthelyezve — A kért erőforrás véglegesen át lett helyezve. A későbbi kéréseket az új cím használatával kell benyújtani.
  • 307 Ideiglenes átirányítás – Az erőforrás ideiglenesen át lett helyezve. Egyelőre automatikus továbbítással érhető el.
  • 403 Tilos – A kérést megértették, de engedély szükséges.
  • 404 Nem található – A szerver nem találta az erőforrást ezen a címen.
  • 501 Nincs implementálva – A szerver nem támogatja a kérés megválaszolásához szükséges funkciókat.
  • 505 HTTP-verzió nem támogatott — A szerver nem támogatja a HTTP protokoll megadott verzióját.
A válasz állapotkódja mellett egy állapotleírás is elküldésre kerül. Ez segít tisztázni, mit jelentenek az egyes állapotok. A HTTP protokoll nagyon praktikus: nagyszámú fejlécet biztosít, amelyek segítségével nagyon rugalmas kommunikációt rendezhet a kliens és a szerver között. Az összes kérés- és válaszfejléc, kérésmódszer és válaszállapotkód teljes körű figyelembevétele túl sok lenne egyetlen cikkhez. Ha szükséges, elolvashatja a protokoll hivatalos specifikációját, amely minden árnyalatot leír. A 80-as porton szokásos a HTTP protokoll használata, így ha olyan URL-t lát, amely a 80-as portra végződik, biztos lehet benne, hogy HTTP protokollt kell használnia a hozzáféréshez. A technológia fejlődésével és a személyes adatok interneten keresztüli küldésével szükségessé vált, hogy elgondolkodjanak azon, hogyan biztosítsanak további védelmet a kliens által a szervernek küldött információk számára. Ennek a gondolkodásnak az eredménye a HTTPS protokoll.

A HTTPS és a HTTP közötti különbség

Szintaxis szempontjából a HTTPS megegyezik a HTTP protokollal. Vagyis ugyanazokat a kezdősorokat és fejléceket használja. Az egyetlen különbség a további titkosítás és az alapértelmezett port (443) . A HTTPS titkosítva van a HTTP és a TCP, azaz az alkalmazás és a szállítási réteg között. Ha elfelejtette, hogy ez mit jelent, tekintse meg az OSI-modellről szóló cikket . A mai titkosítási szabvány a TLS. Nem megyünk bele túlságosan a témába, de ne feledje, hogy a titkosítás még azelőtt megtörténik, hogy az információ elérné a szállítási réteget. A HTTPS-ben abszolút minden információ titkosítva van, kivéve a gazdagépet és a portot, ahová a kérést küldik. Ha egy szervert HTTPS helyett HTTPS protokoll használatára vált, akkor nincs szükség a kiszolgáló kódjának módosítására. Ez a funkció a szervlet-tárolókban engedélyezett, amelyet a következő cikkekben tárgyalunk. És mára ennyi. Tulajdonképpen várj egy kicsit. Néhány HTTP-kérelem kezeléséhez nyissa meg a Google Chrome-ot, nyomja meg az F12 billentyűt, és válassza ki a „Hálózat” lapot. Itt megjelenik a böngészője által küldött/kapott összes kérés és válasz. 4. rész. A Maven alapjai 5. rész: Szervletek és a Java Servlet API. Egyszerű webalkalmazás írása 6. rész. Szervlet konténerek 7. rész Az MVC (Model-View-Controller) minta bemutatása
Hozzászólások
  • Népszerű
  • Új
  • Régi
Hozzászólás írásához be kell jelentkeznie
Ennek az oldalnak még nincsenek megjegyzései