En introduktion til HTTP: alt hvad du behøver at vide

I denne artikel vil jeg lede dig gennem, hvordan internet fungerer på et grundlæggende niveau.

Kerneteknologien er HTTP - Hypertext Transfer Protocol. Det er den kommunikationsprotokol, du bruger, når du surfer på nettet.

På et grundlæggende niveau, når du besøger et websted, sender din browser en HTTP-anmodning til en server. Derefter reagerer denne server med en ressource (et billede, en video eller en websides HTML) - som din browser derefter viser for dig.

Dette er HTTPs meddelelsesbaserede model. Hver HTTP-interaktion inkluderer en anmodning og et svar.

HTTP er af sin art statsløs.

Statsløs betyder, at alle anmodninger er adskilt fra hinanden. Så hver anmodning fra din browser skal indeholde nok information alene for at serveren kan opfylde anmodningen. Det betyder også, at hver transaktion af den meddelelsesbaserede HTTP-model behandles separat fra de andre.

URL'er

URL'en (Uniform Resource Locator) er sandsynligvis det mest kendte koncept på Internettet. Det er også et af de vigtigste og mest nyttige begreber. En URL er en webadresse, der bruges til at identificere ressourcer på Internettet.

Idéen på internettet er struktureret omkring ressourcer. Fra begyndelsen var Internettet platformen til deling af tekst / HTML-filer, dokumenter, billeder osv., Og som sådan kan det betragtes som en samling ressourcer.

Protokol  - Oftest er de HTTP (eller HTTPS til en sikker version af HTTP).

Andre bemærkelsesværdige protokoller er:

  • File Transfer Protocol (FTP) - er en standardprotokol, der bruges til at overføre filer mellem en klient og en server over et netværk.
  • Simple Mail Transfer Protocol (SMTP) er en standard til transmission af e-mail.

Domæne  - Navn, der bruges til at identificere en eller flere IP-adresser, hvor ressourcen er placeret.

Sti — Angiver ressourceplaceringen på serveren. Det bruger den samme logik som en ressourceplacering, der bruges på den enhed, hvor du læser denne artikel (dvs. /søgning/biler/VWBeetle.pdf eller C: / mine biler / VWBeetle.pdf).

Parametre  - Yderligere data, der bruges til at identificere eller filtrere ressourcen på serveren.

Bemærk : Når du søger efter artikler og mere information om HTTP, kan du muligvis støde på udtrykket URI (eller ensartet ressourceidentifikator). URI bruges undertiden i stedet for URL, men for det meste i formelle specifikationer og af folk, der ønsker at vise sig. :)

HTTP-anmodninger

I HTTP skal hver anmodning have en URL-adresse. Derudover har anmodningen brug for en metode. De fire vigtigste HTTP-metoder er:

  • SÆTTE
  • STOLPE
  • SLET

Jeg vil forklare disse metoder og mere i afsnittet HTTP-metoder i denne artikel.

Og disse metoder svarer direkte til handlinger:

  • Læs
  • opdatering
  • skab
  • slet

Alle HTTP-meddelelser har en eller flere overskrifter efterfulgt af en valgfri meddelelsesdel. Organet indeholder de data, der sendes med anmodningen eller de data, der modtages med svaret.

Den første del af hver HTTP-anmodning indeholder tre elementer:

Eksempel:

  • FÅ / tilføjer / søgeresultat? Item = vw + beetle HTTP / 1.1

Når en URL indeholder et "?" tegn betyder det, at det indeholder en forespørgsel. Det betyder, at det sender parametre for den anmodede ressource.

  1. Den første del er en metode, der fortæller, hvilken HTTP-metode der bruges. Mest brugt er GET-metoden. GET-metoden henter en ressource fra webserveren, og da GET ikke har en beskedtekst, er der intet behov for overskriften.
  2. Den anden del er en anmodet URL.
  3. Den tredje del er en HTTP-version, der bruges. Version 1.1. er den mest almindelige version for de fleste browsere, men version 2.0 overtager dog.

Der er også nogle andre interessante ting i en HTTP-anmodning:

Referer header  - fortæller URL'en, hvorfra anmodningen stammer.

User-Agent header  - yderligere oplysninger om den browser, der bruges til at generere anmodningen.

Host header  - identificerer entydigt et værtsnavn; det er nødvendigt, når flere websider hostes på den samme server.

Cookie header  - sender yderligere parametre til klienten.

HTTP-svar

Ligesom i HTTP-anmodninger består HTTP-svar også af tre elementer:

Eksempel:

HTTP / 1.1 200 OK

  1. Den første del er den HTTP-version, der bruges.
  2. Den anden del er den numeriske kode for resultatet for anmodningen.
  3. Den tredje del er en tekstbeskrivelse af den anden del.

Der er nogle andre interessante ting i et HTTP-svar:

Serverhoved  - oplysninger om, hvilken webserversoftware der bruges.

Set-Cookie header  - udsteder cookien til browseren.

Beskedtekst  - det er almindeligt, at et HTTP-svar indeholder en beskedtekst.

Content-Length header  - fortæller størrelsen på meddelelsens brødtekst i byte.

HTTP-metoder

De mest almindelige metoder er GET og POST. Men der er også et par andre.

GET  - Du bruger denne metode til at anmode om data fra en bestemt ressource, hvor data ikke ændres på nogen måde. GET-anmodninger ændrer ikke ressourcens tilstand.

POST  - Du bruger denne metode til at sende data til en server for at oprette en ressource.

PUT - Du bruger denne metode til at opdatere den eksisterende ressource på en server ved hjælp af indholdet i selve anmodningen. Tænk på dette som en måde at "redigere" noget på.

HEAD  - Du bruger denne metode på samme måde som du bruger GET, men med den forskel, at returneringen af ​​en HEAD-metode ikke skal indeholde body i svaret. Men returneringen vil indeholde de samme overskrifter, som hvis GET blev brugt. Du bruger HEAD-metoden til at kontrollere, om ressourcen er til stede, inden du foretager en GET-anmodning.

TRACE -  Du bruger denne metode til diagnostiske formål. Svaret vil indeholde det nøjagtige indhold af anmodningsmeddelelsen i sin krop.

VALGMULIGHEDER  - Du bruger denne metode til at beskrive de kommunikationsindstillinger (HTTP-metoder), der er tilgængelige for målressourcen.

PATCH -  Du bruger denne metode til at anvende delvise ændringer til en ressource.

SLET - Du bruger denne metode til at slette den angivne ressource.

HVILE

Repræsentationsstatusoverførsel (REST) ​​er en arkitekturstil, hvor anmodninger og svar indeholder repræsentationer af systemressourceens aktuelle tilstand.

"Regelmæssig" måde:

  • //carapp.com/search?make=wv&model=beetle

REST-stil:

  • //carapp.com/search/vw/beetle

Du kan lære mere om REST her, hvis du er nysgerrig.

HTTP-overskrifter

Der er tre hovedkomponenter, der udgør anmodnings- / svarstrukturen. Disse inkluderer:

  • Første linje
  • Overskrifter
  • Krop / indhold

Vi talte allerede om den første linje i HTTP-anmodninger og svar, og kropsfunktion blev også nævnt. Nu taler vi om HTTP-headere.

HTTP-overskrifter tilføjes efter den første linje og defineres som navn: værdipar adskilt af et kolon. HTTP-overskrifter bruges til at sende yderligere parametre sammen med anmodningen eller svaret.

Som jeg allerede sagde, indeholder meddelelsens brødtekst de data, der skal sendes med anmodningen eller de modtagne data sammen med svaret.

Der er forskellige typer overskrifter, der er grupperet baseret på deres anvendelse i 4 brede kategorier:

  • Generel overskrift  - Overskrifter, der kan bruges i både anmodninger og svarmeddelelser, og som er uafhængige af de data, der udveksles.
  • Anmodningshoved  - Disse overskrifter definerer parametre for de anmodede data eller parametre, der giver vigtig information om klienten, der fremsætter anmodningen.
  • Svarhoved  - Disse overskrifter indeholder oplysninger om det indgående svar.
  • Enhedsoverskrift  - Enhedsoverskrifterne beskriver indholdet, der udgør selve meddelelsen.

HTTP-statuskoder

Når du surfer på nettet, er der muligvis stødt på "404-fejl: ikke fundet" -sider eller "500-fejl: server svarer ikke" -sider.

Disse er HTTP-statuskoder.

Hver HTTP-svarmeddelelse skal indeholde en HTTP-statuskode i sin første linje, der fortæller os resultatet af anmodningen.

Der er fem grupper af statuskoder, der er grupperet efter det første ciffer:

  • 1xx - Oplysende.
  • 2xx - Anmodningen blev gennemført.
  • 3xx - Klienten omdirigeres til en anden ressource.
  • 4xx - Anmodningen indeholder en eller anden slags fejl.
  • 5xx - Serveren stødte på en fejl, der opfyldte anmodningen.

Her er en komplet liste over HTTP-status svarskoder og deres forklaring.

HTTPS (Hypertext Transfer Protocol Secure)

Den sikre version af HTTP-protokol er HyperText Transfer Protocol Secure (HTTPS). HTTPS giver krypteret kommunikation mellem en browser (klient) og hjemmesiden (server).

I HTTPS krypteres kommunikationsprotokollen ved hjælp af TLS (Transport Layer Security) eller SSL (Secure Sockets Layer).

Protokollen kaldes derfor ofte også HTTP over TLS eller HTTP over SSL.

Både TLS- og SSL-protokollerne bruger et asymmetrisk krypteringssystem. Asymmetriske krypteringssystemer bruger en offentlig nøgle (krypteringsnøgle) og en privat nøgle (dekrypteringsnøgler) til at kryptere en besked.

Alle kan bruge den offentlige nøgle til at kryptere en besked. Private nøgler er dog hemmelige, og det betyder, at kun den tilsigtede modtager kan dekryptere beskeden.

SSL / TLS håndtryk

Når du anmoder om en HTTPS-forbindelse til et websted, sender webstedet sit SSL-certifikat til din browser. Den proces, hvor din browser og dit websted indleder kommunikation kaldes "SSL / TLS-håndtryk."

SSL / TLS-håndtrykket involverer en række trin, hvor browser og website validerer hinanden og starter kommunikation gennem SSL / TLS-tunnelen.

Som du sikkert har bemærket, vises det grønne hængelåsikon i browserens adresselinje, når en pålidelig sikker tunnel bruges i en HTTPS-forbindelse.

Fordele ved HTTPS

De største fordele ved en HTTPS er:

  • Kundeoplysninger, som kreditkortnumre og andre følsomme oplysninger, er krypteret og kan ikke opfanges.
  • Besøgende kan bekræfte, at du er en registreret virksomhed, og at du ejer domænet.
  • Kunder ved, at de ikke formoder at besøge websteder uden HTTPS, og derfor er de mere tilbøjelige til at stole på og gennemføre køb fra websteder, der bruger HTTPS.

Tak fordi du læste! Tjek flere artikler som denne på min freeCodeCamp-profil. Og tjek andre sjove ting, jeg bygger på min GitHub-side.