CodeGym/Java blogg/Slumpmässig/Del 3. HTTP/HTTPS
John Squirrels
Nivå
San Francisco

Del 3. HTTP/HTTPS

Publicerad i gruppen
Detta material är en del av serien "Introduktion till företagsutveckling". Tidigare artiklar: Del 3. HTTP/HTTPS - 1Hej! Idag ska vi lära oss om HTTP- och HTTPS-protokollen. Men först, låt oss förtydliga en punkt: vi pratar om protokoll för att skicka data över ett nätverk på applikationsnivån för OSI-modellen. Du kanske minns att vi lärde känna OSI-modellen i en av de tidigare artiklarna. Om du inte kommer ihåg det, här är det .

Vad är ett datakommunikationsprotokoll?

Detta är vad vi kallar den överenskomna uppsättningen regler som tillåter utvecklare av olika tjänster att skicka information i ett format som andra kan förstå. Du kan till exempel använda Google Chrome för att få information från både Facebook och Twitter, eftersom utvecklarna skickar den med standard HTTP-protokollet, vilket gör att din webbläsare kan bearbeta den. Enhetliga regler är mycket bekväma för de som utvecklar serverdelen: det finns många bibliotek som kan konvertera information åt dig och skicka den med rätt protokoll. HTTP var ursprungligen tänkt som ett protokoll för att skicka HTML-sidor. Det var så det användes länge, men nu använder programmerare det ofta för att skicka både strängar och mediafiler. I allmänhet är detta protokoll universellt accepterat och mångsidigt, och det är verkligen lätt att använda. Och nu ska vi undersöka hur man använder det.

Strukturen för HTTP

Vi bör genast notera att HTTP-protokollet endast består av text. Det som intresserar oss mest är strukturen i denna text. Varje meddelande består av tre delar:
  1. Startlinje — Detta definierar vissa hushållsdata.
  2. Rubriker — Dessa beskriver meddelandeparametrarna.
  3. Kropp — Detta är innehållet i meddelandet. Brödtexten måste separeras från rubrikerna med en tom rad.
HTTP-protokollet används för att skicka förfrågningar till en server och ta emot svar från servern. Parametrarna för förfrågningar och svar är något annorlunda.

Så här ser en enkel HTTP-förfrågan ut:

GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Startraden visar:
  • GET — Förfrågans metod
  • / — Förfrågans väg
  • HTTP/1.1 — Protokollversionen
Sedan kommer rubrikerna:
  • Värd — Värden som förfrågan är adresserad till
  • User-Agent — Klienten som skickar begäran
Meddelandetexten saknas. I en HTTP-förfrågan krävs endast startraden och "Host"-huvudet. Låt oss nu titta på allt ett steg i taget. En HTTP-begäran måste innehålla någon metod. Det finns nio av dem: GET, POST, PUT, ALTERNATIV, HEAD, PATCH, DELETE, TRACE, CONNECT. De vanligaste är GET och POST. Dessa två metoder kommer att räcka till en början. GET — Denna metod begär innehåll från servern. Följaktligen har förfrågningar med GET-metoden ingen meddelandetext. Men om du behöver kan du skicka parametrar via sökvägen (på startraden) i följande format:
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
där codegym.cc är värden, /send är begärans sökväg och ? är en avgränsare som indikerar att frågeparametrarna följer. I slutet listas nyckel-värdepar ("nyckel=värde"), separerade med ett et-tecken. POST — Denna metod publicerar information på servern. En POST-begäran kan skicka olika typer av information: parametrar som "nyckel=värde"-par, JSON, HTML-kod eller till och med filer. All information skickas i meddelandets brödtext. Till exempel:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc

{
  "Id": 12345,
  "User": "John"
}
Begäran skickas till codegym.cc/user/create/json, och protokollversionen är HTTP/1.1. "Acceptera" indikerar det svarsformat som klienten förväntar sig att få. "Content-Type" anger formatet på meddelandetexten som skickades i begäran. "Content-Length" är antalet tecken i brödtexten. En HTTP-förfrågan kan innehålla många olika rubriker. För mer information, ta en titt på protokollets specifikation .

HTTP-svar

Efter att ha tagit emot en förfrågan bearbetar servern den och skickar ett svar till klienten:
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>
Svarets startrad innehåller protokollversionen (HTTP/1.1), statuskod (200) och statusbeskrivning (OK). Dess rubriker inkluderar typen och längden på innehållet. Svarskroppen innehåller HTML-kod som webbläsaren renderar som en HTML-sida.

Svarsstatuskoder

Allt är klart angående meddelandetext och rubriker, men vi bör säga några ord om statuskoder. Svarsstatuskoder är alltid tresiffriga. Den första siffran i koden anger kategorin för svaret:
  • 1xx — Information. Begäran mottogs. Servern är redo att fortsätta.
  • 2xx — Lyckad. Förfrågan mottogs, förstods och behandlades.
  • 3xx — Omdirigering. Ytterligare åtgärder måste utföras för att behandla begäran.
  • 4xx — Klientfel. Begäran innehåller fel eller överensstämmer inte med protokollet.
  • 5xx — Serverfel. Begäran var korrekt sammansatt, men servern kunde inte bearbeta den.
Den andra och tredje siffran i koden indikerar ett mer specifikt svar. Till exempel:
  • 200 OK — Förfrågan mottogs och behandlades framgångsrikt.
  • 201 Skapad — Förfrågan togs emot och behandlades framgångsrikt, vilket resulterade i att en ny resurs eller instans skapades.
  • 301 Flyttade permanent — Den begärda resursen flyttades permanent. Efterföljande förfrågningar till den bör göras med den nya adressen.
  • 307 Temporary Redirect — Resursen har flyttats tillfälligt. För närvarande kan den nås med automatisk vidarebefordran.
  • 403 Förbjudet — Begäran förstods, men tillstånd krävs.
  • 404 Not Found — Servern hittade inte resursen på den här adressen.
  • 501 Ej implementerad — Servern stöder inte den funktionalitet som krävs för att svara på begäran.
  • 505 HTTP-version stöds inte — Servern stöder inte den angivna versionen av HTTP-protokollet.
Utöver svarsstatuskoden skickas även en statusbeskrivning. Detta hjälper till att klargöra vad varje specifik status betyder. HTTP-protokollet är mycket praktiskt: det tillhandahåller ett stort antal headers, som du kan använda för att ordna mycket flexibel kommunikation mellan en klient och server. En fullständig övervägande av alla förfrågnings- och svarsrubriker, begäransmetoder och svarsstatuskoder skulle vara för mycket för en enskild artikel. Om du behöver kan du läsa protokollets officiella specifikation, som beskriver alla nyanser. Det är vanligt att använda HTTP-protokollet på port 80, så när du ser en URL som slutar med port 80 kan du vara säker på att du måste använda HTTP för att komma åt den. När tekniken utvecklades och personuppgifter började skickas över Internet, blev det nödvändigt att tänka på hur man skulle kunna ge ytterligare skydd för den information som klienten skickar till servern. Resultatet av detta tänkande var HTTPS-protokollet.

Skillnaden mellan HTTPS och HTTP

Syntaxmässigt är HTTPS identisk med HTTP-protokollet. Det vill säga, den använder samma startlinjer och rubriker. De enda skillnaderna är ytterligare kryptering och standardporten (443) . HTTPS krypteras mellan HTTP och TCP, det vill säga mellan applikations- och transportlagren. Om du har glömt vad det betyder, kolla in artikeln om OSI-modellen . Dagens krypteringsstandard är TLS. Vi kommer inte gå in för mycket på detta ämne, men kom ihåg att kryptering sker innan information når transportlagret. I HTTPS är absolut all information krypterad, förutom värden och porten dit begäran skickas. Att byta en server till att använda HTTPS-protokollet istället för HTTP kräver inte användning för att ändra serverkoden. Den här funktionen är aktiverad i servletbehållare, som vi kommer att diskutera i efterföljande artiklar. Och det var allt för idag. Vänta ett ögonblick faktiskt. För att få tag på vissa HTTP-förfrågningar, öppna Google Chrome, tryck på F12 och välj fliken "Nätverk". Alla förfrågningar och svar som skickats/mottagits av din webbläsare kommer att visas här. Del 4. Grunderna i Maven Del 5. Servlets och Java Servlet API. Att skriva en enkel webbapplikation Del 6. Servletbehållare Del 7. Introduktion av MVC-mönstret (Model-View-Controller)
Kommentarer
  • Populär
  • Ny
  • Gammal
Du måste vara inloggad för att lämna en kommentar
Den här sidan har inga kommentarer än