Een inleiding tot HTTP: alles wat u moet weten

In dit artikel laat ik je zien hoe het world wide web op fundamenteel niveau werkt.

De kerntechnologie is HTTP - Hypertext Transfer Protocol. Het is het communicatieprotocol dat u gebruikt wanneer u op internet surft.

Op een fundamenteel niveau, wanneer u een website bezoekt, doet uw browser een HTTP-verzoek aan een server. Vervolgens reageert die server met een bron (een afbeelding, video of de HTML van een webpagina) - die uw browser vervolgens voor u weergeeft.

Dit is het op berichten gebaseerde model van HTTP. Elke HTTP-interactie omvat een verzoek en een reactie.

HTTP is van nature staatloos.

Stateless betekent dat alle verzoeken van elkaar gescheiden zijn. Dus elk verzoek van uw browser moet voldoende informatie bevatten zodat de server aan het verzoek kan voldoen. Dat betekent ook dat elke transactie van het op berichten gebaseerde HTTP-model afzonderlijk van de andere wordt verwerkt.

URL's

De URL (Uniform Resource Locator) is waarschijnlijk het meest bekende concept van het web. Het is ook een van de belangrijkste en meest bruikbare concepten. Een URL is een webadres dat wordt gebruikt om bronnen op internet te identificeren.

Het idee van internet is opgebouwd rond bronnen. Vanaf het begin was het web het platform voor het delen van tekst- / HTML-bestanden, documenten, afbeeldingen enz., En als zodanig kan het worden beschouwd als een verzameling bronnen.

Protocol  - Meestal zijn dit HTTP (of HTTPS voor een veilige versie van HTTP).

Andere opmerkelijke protocollen zijn:

  • File Transfer Protocol (FTP) - is een standaardprotocol dat wordt gebruikt voor het overbrengen van bestanden tussen een client en een server via een netwerk.
  • Simple Mail Transfer Protocol (SMTP) is een standaard voor e-mailverzending.

Domein  - Naam die wordt gebruikt om een ​​of meer IP-adressen te identificeren waar de bron zich bevindt.

Pad - Specificeert de bronlocatie op de server. Het gebruikt dezelfde logica als een bronlocatie die wordt gebruikt op het apparaat waarop u dit artikel leest (dwz / search/cars/VWBeetle.pdf of C: / mijn auto's / VWBeetle.pdf).

Parameters  - Aanvullende gegevens die worden gebruikt om de bron op de server te identificeren of te filteren.

Opmerking : wanneer u naar artikelen en meer informatie over HTTP zoekt, kunt u de term URI (of uniforme resource-id) tegenkomen. URI wordt soms gebruikt in plaats van URL, maar meestal in formele specificaties en door mensen die willen pronken. :)

HTTP-verzoeken

In HTTP moet elk verzoek een URL-adres hebben. Bovendien heeft het verzoek een methode nodig. De vier belangrijkste HTTP-methoden zijn:

  • KRIJGEN
  • ZETTEN
  • POST
  • VERWIJDEREN

Ik zal deze methoden, en meer, uitleggen in het gedeelte HTTP-methoden van dit artikel.

En deze methoden komen rechtstreeks overeen met acties:

  • lezen
  • bijwerken
  • creëren
  • verwijderen

Alle HTTP-berichten hebben een of meer headers, gevolgd door een optionele berichttekst. De body bevat de gegevens die bij het verzoek worden verzonden of de gegevens die bij het antwoord worden ontvangen.

Het eerste deel van elk HTTP-verzoek bevat drie items:

Voorbeeld:

  • GET / voegt / zoekresultaat? Item = vw + beetle HTTP / 1.1

Als een URL een "?" teken, het betekent dat het een vraag bevat. Dat betekent dat het parameters van de gevraagde bron verzendt.

  1. Het eerste deel is een methode die vertelt welke HTTP-methode wordt gebruikt. De meest gebruikte methode is de GET-methode. De GET-methode haalt een bron op van de webserver en aangezien GET geen berichttekst heeft, is er niets na de koptekst nodig.
  2. Het tweede deel is een opgevraagde URL.
  3. Het derde deel is een HTTP-versie die wordt gebruikt. Versie 1.1.18 is de meest voorkomende versie voor de meeste browsers, maar versie 2.0 neemt het over.

Er zijn ook enkele andere interessante dingen in een HTTP-verzoek:

Referer header  - vertelt de URL waar het verzoek vandaan komt.

User-Agent header  - aanvullende informatie over de browser die wordt gebruikt om het verzoek te genereren.

Host-header  - identificeert op unieke wijze een hostnaam; het is nodig als meerdere webpagina's op dezelfde server worden gehost.

Cookie-header  - verzendt aanvullende parameters naar de klant.

HTTP-reacties

Net als bij HTTP-verzoeken, bestaan ​​HTTP-antwoorden ook uit drie items:

Voorbeeld:

HTTP / 1.1 200 OK

  1. Het eerste deel is de HTTP-versie die wordt gebruikt.
  2. Het tweede deel is de numerieke code van het resultaat voor het verzoek.
  3. Het derde deel is een tekstuele beschrijving van het tweede deel.

Er zijn een aantal andere interessante dingen in een HTTP-reactie:

Serverheader  - informatie over welke webserversoftware wordt gebruikt.

Set-Cookie header  - geeft de cookie door aan de browser.

Berichttekst  - het is gebruikelijk dat een HTTP-antwoord een berichttekst bevat.

Content-Length header  - geeft de grootte van de berichttekst in bytes aan.

HTTP-methoden

De meest voorkomende methoden zijn GET en POST. Maar er zijn er ook nog een paar.

GET  - U gebruikt deze methode om gegevens op te vragen bij een gespecificeerde bron waar de gegevens op geen enkele manier zijn gewijzigd. GET-verzoeken veranderen de status van de bron niet.

POST  - U gebruikt deze methode om gegevens naar een server te verzenden om een ​​bron te maken.

PUT - U gebruikt deze methode om de bestaande bron op een server bij te werken met behulp van de inhoud in de hoofdtekst van het verzoek. Beschouw dit als een manier om iets te "bewerken".

HEAD  - Je gebruikt deze methode op dezelfde manier als je GET gebruikt, maar met het onderscheid dat de return van een HEAD-methode geen body in het antwoord mag bevatten. Maar de return bevat dezelfde headers alsof GET werd gebruikt. U gebruikt de HEAD-methode om te controleren of de bron aanwezig is voordat u een GET-verzoek doet.

TRACE -  U gebruikt deze methode voor diagnostische doeleinden. Het antwoord bevat de exacte inhoud van het verzoekbericht.

OPTIES  - U gebruikt deze methode om de communicatieopties (HTTP-methoden) te beschrijven die beschikbaar zijn voor de doelbron.

PATCH -  U gebruikt deze methode om gedeeltelijke wijzigingen aan een resource toe te passen.

DELETE - U gebruikt deze methode om de opgegeven bron te verwijderen.

RUST UIT

Representatieve toestandsoverdracht (REST) ​​is een architectuurstijl waarbij verzoeken en antwoorden representaties bevatten van de huidige toestand van de systeembronnen.

"Normale" manier:

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

REST-stijl:

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

Als je nieuwsgierig bent, kun je hier meer lezen over REST.

HTTP-headers

Er zijn drie hoofdcomponenten die de aanvraag- / antwoordstructuur vormen. Deze omvatten:

  • Eerste lijn
  • Headers
  • Body / inhoud

We hadden het al over de eerste regel in HTTP-verzoeken en -antwoorden, en ook de lichaamsfunctie werd genoemd. Nu zullen we het hebben over HTTP-headers.

De HTTP-headers worden toegevoegd na de eerste regel en worden gedefinieerd als naam: waardeparen gescheiden door een dubbele punt. HTTP-headers worden gebruikt om aanvullende parameters mee te sturen met het verzoek of antwoord.

Zoals ik al zei, bevat de hoofdtekst van het bericht de gegevens die met het verzoek moeten worden verzonden of de gegevens die samen met het antwoord worden ontvangen.

Er zijn verschillende soorten kopteksten die zijn gegroepeerd op basis van hun gebruik in 4 brede categorieën:

  • Algemene header  - Headers die kunnen worden gebruikt in zowel verzoeken als antwoordberichten en die onafhankelijk zijn van de gegevens die worden uitgewisseld.
  • Verzoekheader  - Deze headers definiëren parameters voor de gevraagde gegevens of parameters die belangrijke informatie geven over de cliënt die het verzoek doet.
  • Reactieheader  - Deze headers bevatten informatie over de inkomende reactie.
  • Entiteitskoptekst  - De entiteitskopteksten beschrijven de inhoud waaruit de hoofdtekst van het bericht bestaat.

HTTP-statuscodes

Terwijl u op internet surft, bent u mogelijk "404-fout: niet gevonden" -pagina's of "500-fouten: server reageert niet" -pagina's tegengekomen.

Dit zijn HTTP-statuscodes.

Elk HTTP-antwoordbericht moet een HTTP-statuscode op de eerste regel bevatten, die ons het resultaat van het verzoek vertelt.

Er zijn vijf groepen statuscodes, gegroepeerd op het eerste cijfer:

  • 1xx - informatief.
  • 2xx - Het verzoek is succesvol.
  • 3xx - De client wordt omgeleid naar een andere bron.
  • 4xx - Het verzoek bevat een of andere fout.
  • 5xx - De server heeft een fout aangetroffen bij het uitvoeren van het verzoek.

Hier is een volledige lijst met HTTP-statusresponscodes en hun uitleg.

HTTPS (Hypertext Transfer Protocol Secure)

De beveiligde versie van het HTTP-protocol is HyperText Transfer Protocol Secure (HTTPS). HTTPS zorgt voor gecodeerde communicatie tussen een browser (client) en de website (server).

Bij HTTPS wordt het communicatieprotocol versleuteld met Transport Layer Security (TLS) of Secure Sockets Layer (SSL).

Het protocol wordt daarom ook vaak HTTP over TLS of HTTP over SSL genoemd.

Zowel de TLS- als de SSL-protocollen gebruiken een asymmetrisch versleutelingssysteem. Asymmetrische versleutelingssystemen gebruiken een openbare sleutel (versleutelingssleutel) en een privésleutel (ontsleutelingssleutels) om een ​​bericht te versleutelen.

Iedereen kan de openbare sleutel gebruiken om een ​​bericht te versleutelen. Privésleutels zijn echter geheim en dat betekent dat alleen de beoogde ontvanger het bericht kan decoderen.

SSL / TLS-handshake

Wanneer u een HTTPS-verbinding met een website aanvraagt, stuurt de website zijn SSL-certificaat naar uw browser. Dat proces waarbij uw browser en website communicatie initiëren, wordt de 'SSL / TLS-handshake' genoemd.

De SSL / TLS-handshake omvat een reeks stappen waarbij browser en website elkaar valideren en communicatie starten via de SSL / TLS-tunnel.

Zoals je waarschijnlijk hebt opgemerkt, wordt het groene hangslotpictogram weergegeven in de adresbalk van de browser wanneer een vertrouwde beveiligde tunnel wordt gebruikt tijdens een HTTPS-verbinding.

Voordelen van HTTPS

De belangrijkste voordelen van een HTTPS zijn:

  • Klantinformatie, zoals creditcardnummers en andere gevoelige informatie, is gecodeerd en kan niet worden onderschept.
  • Bezoekers kunnen verifiëren dat u een geregistreerd bedrijf bent en dat u de eigenaar bent van het domein.
  • Klanten weten dat het niet de bedoeling is dat ze sites bezoeken zonder HTTPS, en daarom is de kans groter dat ze sites die HTTPS gebruiken, vertrouwen en aankopen doen.

Bedankt voor het lezen! Bekijk meer van dit soort artikelen op mijn freeCodeCamp-profiel. En bekijk andere leuke dingen die ik bouw op mijn GitHub-pagina.