HTTP
Også kendt som: Hypertext Transfer Protocol
De regler for forespørgsel og svar, som en webbrowser og en server følger for at hente sider, billeder og data over internettet.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
En protokol, hvor en klient sender en forespørgsel med en ressource og en metode, fx GET eller POST, og serveren svarer med en statuskode og indhold. Hver forespørgsel står alene, så serveren husker ikke selv noget mellem dem; nyere versioner bærer de samme beskeder i hurtigere former.
Forklaret enkelt
Som at bestille ved en disk med en seddel - du skriver, hvad du vil have, rækker den over og får enten varen eller en besked om, hvorfor ikke.
I praksis
En borger klikker på et gammelt link til en side på kommunens hjemmeside. Browseren sender en GET-forespørgsel, og fordi siden er blevet slettet, svarer serveren med status 404 i stedet for siden.
Teknisk uddybning
HTTP begyndte som enlinjes-protokollen HTTP/0.9 i 1991 (kun GET, ingen headere), blev til HTTP/1.0 i RFC 1945 (1996) og HTTP/1.1 i RFC 2068 (1997), RFC 2616 (1999) og RFC 7230-7235-serien (2014). I juni 2022 adskilte IETF den versionsuafhængige semantik fra formaterne på ledningen: RFC 9110 (semantik), RFC 9111 (caching), RFC 9112 (beskedsyntaks for HTTP/1.1), RFC 9113 (HTTP/2) og RFC 9114 (HTTP/3). HTTP/2, første gang udgivet som RFC 7540 i 2015, erstattede tekstformatet med binære frames, der multiplekses som streams over én TCP-forbindelse, og komprimerede headere med HPACK (RFC 7541), men head-of-line blocking i TCP bestod. HTTP/3 kører over QUIC (RFC 9000), en UDP-baseret transport med indbygget TLS 1.3 og uafhængige streams, og bruger QPACK (RFC 9204) til headere.
Semantikken er den stabile kerne. Metoderne har definerede egenskaber: sikre metoder (GET, HEAD, OPTIONS, TRACE; RFC 9110 afsnit 9.2.1) må ikke anmode om tilstandsændringer, og idempotente metoder (de sikre plus PUT og DELETE; afsnit 9.2.2) må gentages automatisk, og derfor kræver gentagne POST-kald beskyttelse på applikationsniveau. Statuskoderne (afsnit 15) falder i fem klasser; 401 betyder "autentificér dig" og skal have en WWW-Authenticate-udfordring med, mens 403 betyder "nej, uanset autentificering"; 307 og 308 bevarer metoden ved omdirigering, hvor 301 og 302 historisk lod klienter skifte til GET. Betingede forespørgsler bruger validatorer: If-None-Match med en ETag giver 304 Not Modified, og If-Match giver optimistisk samtidighedskontrol med 412 Precondition Failed. I caching (RFC 9111) tillader Cache-Control: no-cache stadig lagring, men kræver genvalidering; kun no-store forbyder lagring, en udbredt misforståelse.
HTTP er tilstandsløs, så tilstand lægges ovenpå via cookies (RFC 6265) eller loginoplysninger i Authorization-headeren. Mange alvorlige angreb rammer beskedsyntaksen snarere end semantikken. Request smuggling udnytter uenighed mellem en front-end-proxy og en back-end-server om, hvor en besked slutter, typisk Content-Length over for Transfer-Encoding: chunked, som RFC 9112 afsnit 6.3 nu afgør strengt. CRLF-injektion muliggør response splitting, og forfalskede Host-headere forgifter links til nulstilling af adgangskoder og caches. HTTP/2 Rapid Reset-angrebet (CVE-2023-44487, oktober 2023) misbrugte hurtig oprettelse og annullering af streams med RST_STREAM til denial of service i rekordstørrelse.
Ren HTTP blotlægger indhold og cookies for alle på ruten; https er HTTP over TLS på port 443, og HSTS (RFC 6797) fortæller browsere, at de aldrig må bruge klartekstvarianten for en vært. HTTP skal holdes adskilt fra HTML (et indholdsformat, den ofte bærer), fra URL'en (den identifikator, en forespørgsel går til) og fra REST (en arkitekturstil, der bruger HTTP's ensartede grænseflade).
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
Relationer
- En slags
- Protokol
Kilder og videre læsning
Standarder og officielle tekster
- RFC 9110 - HTTP Semantics · IETF
Lærebøger
- Kurose & Ross, Computer Networking: A Top-Down Approach
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…