Dette materiale er en del af serien "Introduktion til virksomhedsudvikling". Tidligere artikler:
Hej! I dag lærer vi om HTTP- og HTTPS-protokollerne. Men først, lad os præcisere et punkt: vi taler om protokoller til at sende data over et netværk på OSI-modellens applikationsniveau. Du husker måske, at vi lærte OSI-modellen at kende i en af de tidligere artikler. Hvis du ikke kan huske det, så er det her .
Hvad er en datakommunikationsprotokol?
Det er det, vi kalder det aftalte regelsæt, der tillader udviklere af forskellige tjenester at sende information i et format, som andre kan forstå. Du kan for eksempel bruge Google Chrome til at få information fra både Facebook og Twitter, fordi udviklerne sender dem ved hjælp af standard HTTP-protokollen, som gør det muligt for din browser at behandle dem. Ensartede regler er meget praktiske for folk, der udvikler serverdelen: der er mange biblioteker, der kan konvertere information for dig og sende den ved hjælp af den passende protokol. HTTP blev oprindeligt tænkt som en protokol til at sende HTML-sider. Sådan blev det brugt i lang tid, men nu bruger programmører det ofte til at sende både strenge og mediefiler. Generelt er denne protokol universelt accepteret og alsidig, og den er virkelig nem at bruge. Og nu vil vi undersøge, hvordan man bruger det.Strukturen af HTTP
Vi skal straks bemærke, at HTTP-protokollen kun består af tekst. Det, der interesserer os mest, er strukturen i denne tekst. Hver besked består af tre dele:- Startlinje — Dette definerer nogle husholdningsdata.
- Overskrifter — Disse beskriver meddelelsesparametrene.
- Body — Dette er indholdet af beskeden. Brødteksten skal adskilles fra overskrifterne med en tom linje.
Sådan ser en simpel HTTP-anmodning ud:
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 angiver:
- GET — Anmodningens metode
- / — Anmodningens vej
- HTTP/1.1 — Protokolversionen
- Vært — Værten, som anmodningen er rettet til
- User-Agent — Klienten, der sender anmodningen
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
hvor codegym.cc er værten, /send er anmodningens sti, og ? er en separator, der angiver, at forespørgselsparametrene følger. Til sidst er nøgleværdi-par ("nøgle=værdi") opført, adskilt af et og-tegn. POST — Denne metode udgiver information på serveren. En POST-anmodning kan sende forskellige slags information: parametre som "nøgle=værdi"-par, JSON, HTML-kode eller endda filer. Alle oplysninger sendes i meddelelsens brødtekst. 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"
}
Anmodningen sendes til codegym.cc/user/create/json, og protokolversionen er HTTP/1.1. "Accepter" angiver det svarformat klienten forventer at modtage. "Content-Type" angiver formatet på den meddelelsestekst, der blev sendt i anmodningen. "Content-Length" er antallet af tegn i brødteksten. En HTTP-anmodning kan indeholde mange forskellige overskrifter. For mere information, tag et kig på protokollens specifikation .
HTTP-svar
Efter at have modtaget en anmodning, 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 indeholder protokolversionen (HTTP/1.1), statuskode (200) og statusbeskrivelse (OK). Dens overskrifter inkluderer typen og længden af indholdet. Svarteksten indeholder HTML-kode, som browseren gengiver som en HTML-side.
Svarstatuskoder
Alt er klart med hensyn til meddelelsestekst og overskrifter, men vi bør sige et par ord om statuskoder. Svarstatuskoder er altid tre cifre. Det første ciffer i koden angiver kategorien for svaret:- 1xx — Oplysninger. Anmodningen blev modtaget. Serveren er klar til at fortsætte.
- 2xx — Vellykket. Anmodningen blev modtaget, forstået og behandlet.
- 3xx — Omdirigering. Yderligere handlinger skal udføres for at behandle anmodningen.
- 4xx — Klientfejl. Anmodningen indeholder fejl eller overholder ikke protokollen.
- 5xx — Serverfejl. Anmodningen var sammensat korrekt, men serveren kunne ikke behandle den.
- 200 OK — Anmodningen blev modtaget og behandlet.
- 201 Oprettet — Anmodningen blev modtaget og behandlet med succes, hvilket resulterede i oprettelsen af en ny ressource eller instans.
- 301 Flyttet permanent — Den anmodede ressource blev flyttet permanent. Efterfølgende anmodninger til den skal gøres ved at bruge den nye adresse.
- 307 Midlertidig omdirigering — Ressourcen er blevet flyttet midlertidigt. Indtil videre kan den tilgås ved hjælp af automatisk videresendelse.
- 403 Forbudt — Anmodningen blev forstået, men autorisation er påkrævet.
- 404 Not Found — Serveren fandt ikke ressourcen på denne adresse.
- 501 Ikke implementeret — Serveren understøtter ikke den funktionalitet, der kræves for at svare på anmodningen.
- 505 HTTP-version ikke understøttet — Serveren understøtter ikke den angivne version af HTTP-protokollen.
GO TO FULL VERSION