Dette materialet er en del av serien "Introduksjon til bedriftsutvikling". Tidligere artikler:
Hei! I dag skal vi lære om HTTP- og HTTPS-protokollene. Men først, la oss avklare ett poeng: vi snakker om protokoller for å sende data over et nettverk på applikasjonsnivået til OSI-modellen. Du husker kanskje at vi ble kjent med OSI-modellen i en av de tidligere artiklene. Hvis du ikke husker det, er det her .
Hva er en datakommunikasjonsprotokoll?
Dette kaller vi det avtalte regelverket som lar utviklere av ulike tjenester sende informasjon i et format som andre kan forstå. Du kan for eksempel bruke Google Chrome til å hente informasjon fra både Facebook og Twitter, fordi utviklerne sender den ved hjelp av standard HTTP-protokollen, som lar nettleseren din behandle den. Ensartede regler er veldig praktiske for folk som utvikler serverdelen: det er mange biblioteker som kan konvertere informasjon for deg og sende den ved hjelp av riktig protokoll. HTTP ble opprinnelig tenkt som en protokoll for å sende HTML-sider. Det var slik det ble brukt lenge, men nå bruker programmerere det ofte til å sende både strenger og mediefiler. Generelt er denne protokollen universelt akseptert og allsidig, og den er veldig enkel å bruke. Og nå skal vi undersøke hvordan du bruker den.Strukturen til HTTP
Vi bør merke oss med en gang at HTTP-protokollen kun består av tekst. Det som interesserer oss mest er strukturen i denne teksten. Hver melding består av tre deler:- Startlinje — Dette definerer noen rengjøringsdata.
- Overskrifter – Disse beskriver meldingsparametrene.
- Brødtekst — Dette er innholdet i meldingen. Brødteksten må skilles fra overskriftene med en tom linje.
Slik ser en enkel HTTP-forespørsel 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)
Startlinjen indikerer:
- GET — forespørselens metode
- / — Søknadens vei
- HTTP/1.1 — Protokollversjonen
- Vert — Verten som forespørselen er adressert til
- User-Agent — Klienten som sender forespørselen
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
hvor codegym.cc er verten, /send er forespørselens bane, og ? er et skilletegn som indikerer at spørringsparametrene følger. På slutten er nøkkel-verdi-par ("nøkkel=verdi") oppført, atskilt med et og-tegnet. POST — Denne metoden publiserer informasjon på serveren. En POST-forespørsel kan sende ulike typer informasjon: parametere som "nøkkel=verdi"-par, JSON, HTML-kode eller til og med filer. All informasjon sendes i brødteksten i meldingen. For eksempel:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc
{
"Id": 12345,
"User": "John"
}
Forespørselen sendes til codegym.cc/user/create/json, og protokollversjonen er HTTP/1.1. "Godta" indikerer svarformatet klienten forventer å motta. "Content-Type" indikerer formatet til meldingsteksten som ble sendt i forespørselen. "Content-Length" er antall tegn i brødteksten. En HTTP-forespørsel kan inneholde mange forskjellige overskrifter. For mer informasjon, ta en titt på protokollens spesifikasjon .
HTTP-svar
Etter å ha mottatt en forespørsel, behandler serveren den og sender et svar til 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 startlinje inneholder protokollversjonen (HTTP/1.1), statuskode (200) og statusbeskrivelse (OK). Overskriftene inkluderer typen og lengden på innholdet. Svarteksten inneholder HTML-kode som nettleseren gjengir som en HTML-side.
Responsstatuskoder
Alt er klart angående meldingsteksten og overskriftene, men vi bør si noen ord om statuskoder. Svarstatuskoder er alltid tresifrede. Det første sifferet i koden indikerer kategorien for svaret:- 1xx — Informasjon. Forespørselen ble mottatt. Serveren er klar til å fortsette.
- 2xx — Vellykket. Forespørselen ble mottatt, forstått og behandlet.
- 3xx — Omdirigering. Ytterligere handlinger må utføres for å behandle forespørselen.
- 4xx — Klientfeil. Forespørselen inneholder feil eller samsvarer ikke med protokollen.
- 5xx — Serverfeil. Forespørselen ble satt sammen riktig, men serveren kunne ikke behandle den.
- 200 OK — Forespørselen ble mottatt og behandlet.
- 201 Opprettet — Forespørselen ble mottatt og behandlet, noe som resulterte i opprettelsen av en ny ressurs eller forekomst.
- 301 Flyttet permanent — Den forespurte ressursen ble flyttet permanent. Påfølgende forespørsler til den skal gjøres ved å bruke den nye adressen.
- 307 Midlertidig omdirigering — Ressursen har blitt flyttet midlertidig. Foreløpig kan den nås ved hjelp av automatisk videresending.
- 403 Forbudt — Forespørselen ble forstått, men autorisasjon kreves.
- 404 Ikke funnet — Serveren fant ikke ressursen på denne adressen.
- 501 Ikke implementert — Serveren støtter ikke funksjonaliteten som kreves for å svare på forespørselen.
- 505 HTTP-versjon støttes ikke — Serveren støtter ikke den angitte versjonen av HTTP-protokollen.
GO TO FULL VERSION