Kennisbank · Internet Marketing Begrippen
HTTP.
HTTP staat voor hypertext transfer protocol. Het is de taal waarin je browser en een webserver met elkaar praten: de browser stuurt een verzoek, de server stuurt een antwoord terug met een code die zegt hoe het ging.
Je hoeft dit niet te kennen om een website te hebben. Het loont wel om de basis te snappen, want vrijwel elke foutmelding die je op je site tegenkomt is een HTTP-antwoord dat je even moet kunnen lezen.
Wat er in een verzoek staat
Een verzoek is gewone tekst. De eerste regel bevat drie dingen: de methode, het pad en de protocolversie. Bijvoorbeeld GET, dan /contact/, dan HTTP/1.1.
Daaronder staan de kopregels. Daarin vertelt je browser welk domein hij bedoelt, welk programma hij is, welke talen de bezoeker begrijpt, welke bestandsformaten hij aankan en welke cookies hij eerder van deze site heeft gekregen. Bij een formulier komt daar nog een blok gegevens onder: de velden die de bezoeker heeft ingevuld.
Dat de server te horen krijgt welk domein je bedoelt is belangrijker dan het klinkt. Op één IP-adres staan vaak tientallen websites. Zonder die kopregel weet de server niet welke site hij moet tonen. Hoe een naam bij een IP-adres terechtkomt is een aparte stap die daaraan voorafgaat en die via DNS loopt.
Eén kopregel is berucht om zijn spelfout. De regel die vertelt vanaf welke pagina je doorklikte heet Referer, met één r te weinig. Die typefout zit sinds de jaren negentig in de standaard en is nooit hersteld, omdat elke server ter wereld hem inmiddels zo verwacht.
Wat er in het antwoord staat
Het antwoord begint met de statuscode en een kort woord erbij, bijvoorbeeld 200 OK. Daaronder staan opnieuw kopregels, en daaronder de inhoud zelf: de HTML van je pagina, of de afbeelding, of het stijlbestand.
Die inhoud is meestal ingepakt. De server comprimeert de tekst voordat hij hem verstuurt en de browser pakt hem weer uit. Bij HTML, CSS en JavaScript scheelt dat flink in de omvang. Bij foto's gebeurt het niet, want die zijn al gecomprimeerd.
Een pagina komt zelden in één verzoek binnen. Je browser haalt eerst de HTML op, leest die, ziet dat er stijlbestanden, scripts, lettertypes en afbeeldingen in staan, en vraagt die allemaal apart op. Een gemiddelde bedrijfspagina bestaat daardoor uit tientallen tot honderden verzoeken. Snelheidswinst zit daarom vaker in minder onderdelen dan in snellere onderdelen.
De methoden
Er zijn er een handvol en in de praktijk kom je er twee tegen.
GET vraagt iets op. Elke pagina die je opent is een GET. POST stuurt iets op: een contactformulier dat je verstuurt, een bestelling die je plaatst.
Daarnaast bestaan PUT, PATCH en DELETE voor het bijwerken en verwijderen van gegevens, en HEAD, dat alleen de kopregels opvraagt zonder de inhoud. Die kom je tegen zodra je met koppelingen tussen systemen werkt.
Dat onderscheid is geen kwestie van netheid. Een GET hoort niets te veranderen. Wie een verwijderknop bouwt als gewone link, bouwt een GET die iets verandert, en dan is het wachten tot een zoekmachinespider of een vooruitladende browser die link volgt en je gegevens weggooit. Dat is een fout die minder vaak voorkomt dan vroeger en nog steeds voorkomt.
De statuscodes die ertoe doen
Elke code bestaat uit drie cijfers en het eerste cijfer vertelt de categorie. De 200-reeks betekent gelukt, de 300-reeks een doorverwijzing, de 400-reeks een fout aan de kant van de aanvrager en de 500-reeks een fout op de server.
- 200. Gelukt. Dit wil je zien bij elke pagina die je in Google terug wilt vinden.
- 301. Permanent verhuisd. Dit zet je op een pagina die een nieuw adres krijgt, zodat bezoekers en zoekmachines meeverhuizen en de opgebouwde waarde overgaat.
- 302. Tijdelijk verhuisd. Bedoeld voor iets dat straks weer op het oude adres staat. Staat er per ongeluk een 302 waar een 301 hoort, dan blijft het oude adres in de index staan.
- 304. Niet gewijzigd. Het antwoord op de vraag of een bestand nog hetzelfde is. Er komt geen inhoud mee terug, alleen de bevestiging dat de browser zijn eigen kopie mag gebruiken.
- 403. Verboden. De pagina bestaat en je mag er niet bij. Vaak een beveiligingsplugin, een firewall of een verkeerd gezette bestandsrechten.
- 404. Niet gevonden. Onvermijdelijk, en zorg dat je 404-pagina de bezoeker verder helpt in plaats van doodloopt.
- 410. Weg en komt niet terug. Netter dan een 404 als je iets bewust hebt verwijderd, bijvoorbeeld een verlopen actiepagina.
- 429. Te veel verzoeken. Je server of je firewall knijpt af omdat er te snel achter elkaar wordt opgevraagd.
- 500. Er ging iets mis op de server. Meestal een fout in code of twee plugins die ruzie maken.
- 503. Tijdelijk niet beschikbaar. Dit hoort je site te sturen tijdens onderhoud, met een indicatie wanneer je terug bent.
Er is er nog één die je zelden ziet en die het vermelden waard is: 451, voor inhoud die om juridische redenen niet beschikbaar is. Dat nummer is bewust gekozen als verwijzing naar de roman Fahrenheit 451 en is in 2016 als standaard vastgelegd.
Wat een zoekmachine met een statuscode doet
Een zoekmachine leest die codes letterlijk en handelt ernaar. Hier hangt je vindbaarheid aan.
Bij een 200 wordt je pagina opgehaald en beoordeeld. Bij een 301 verhuist Google het adres in zijn index naar het nieuwe en gaat de opgebouwde waarde mee. Bij een 302 doet hij dat niet: hij houdt het oude adres aan als het blijvende, omdat je zelf hebt gezegd dat het tijdelijk is. Dat is het verschil dat bij een verhuizing het meeste kost.
Bij een 404 verdwijnt de pagina uit de index nadat hij een paar keer is teruggekomen en hetzelfde antwoord kreeg. Bij een 410 gaat dat sneller, want je zegt expliciet dat het definitief is.
Bij een 403 kan een zoekmachine niets. De pagina wordt niet gecrawld en valt op termijn weg. Dit gebeurt in de praktijk als een beveiligingsplugin de crawler voor een aanvaller aanziet, en je merkt het pas als je verkeer al is ingezakt.
Bij een 503 komt Google later terug zonder je pagina te laten vallen, mits het echt tijdelijk is. Duurt een 503 dagen, dan verdwijnen je pagina's alsnog. Bij aanhoudende 500-fouten vertraagt Google eerst het crawlen en haalt daarna pagina's uit de index. Hoe dat proces verloopt staat in het artikel over indexering door zoekmachines.
Let ten slotte op de zachte 404: een pagina die netjes 200 teruggeeft terwijl er "niet gevonden" op staat. Google herkent dat en behandelt hem als een 404, maar jij ziet in je eigen controles alleen groene vinkjes. Slecht ingestelde WordPress-plugins produceren die situatie regelmatig.
Kopregels die je site raken
De meeste kopregels zie je nooit en een paar bepalen hoe je site zich gedraagt.
Content-Type vertelt wat voor bestand er terugkomt. Staat die verkeerd, dan toont de browser je PDF als tekstsoep of biedt hij je HTML aan als download.
Cache-Control bepaalt hoe lang de browser een bestand mag bewaren. Location staat in een doorverwijzing en bevat het nieuwe adres. Set-Cookie plaatst een cookie, en dat is meteen de kopregel waar de toestemmingsregels over gaan.
X-Robots-Tag kan een pagina of bestand uit de zoekresultaten houden. Dat is de enige manier om dat bij een PDF of een afbeelding te doen, want daar kun je geen meta-tag in zetten.
Strict-Transport-Security laat de browser onthouden dat je site alleen via https bereikbaar is, zodat er niet eerst een onbeveiligd verzoek langsgaat. Content-Security-Policy beperkt van welke bronnen scripts geladen mogen worden en is een van de weinige maatregelen die een besmetting via een externe partij echt tegenhoudt. Beide zet je in bij je server of via je hostingpartij, en beide kunnen je site slopen als je ze verkeerd instelt. Test op een kopie.
Caching: wat er niet opnieuw wordt opgehaald
Je browser bewaart bestanden die hij al eens heeft opgehaald. Bij een volgend bezoek vraagt hij niet om het bestand maar om bevestiging dat het nog hetzelfde is.
Dat werkt met twee kopregels. De server stuurt bij het eerste bezoek een ETag mee, een korte vingerafdruk van het bestand, en een datum van de laatste wijziging. De browser stuurt die bij het volgende bezoek terug met de vraag of er iets veranderd is. Is dat niet zo, dan komt er een 304 terug zonder inhoud. Dat scheelt de hele overdracht.
Daarnaast zit er vaak nog caching op de server en bij een tussenpartij. Draai je je site achter Cloudflare of een andere dienst die je pagina's op verschillende plekken in de wereld bewaart, dan komt het antwoord van daar en raakt je eigen server het verzoek niet eens.
Praktisch gevolg: je past iets aan en je ziet het niet terug. Voordat je gaat zoeken naar een fout, leeg je eerst de cache van je site, dan die van de tussenpartij, en pas daarna herlaad je je browser zonder cache. In die volgorde, anders kijk je telkens naar de verkeerde kopie.
HTTPS
De beveiligde versie van hetzelfde protocol. Het verkeer tussen browser en server wordt versleuteld, zodat niemand onderweg kan meelezen of iets kan wijzigen. Standaard loopt gewoon HTTP over poort 80 en https over poort 443.
Dit is geen keuze meer. Chrome zet sinds juli 2018 bij elke onbeveiligde pagina "Niet veilig" in de adresbalk. Formulieren waarin bezoekers persoonsgegevens invullen horen sowieso versleuteld te gaan, want de AVG vraagt om passende beveiliging en dit is de goedkoopste maatregel die er bestaat.
Een certificaat is gratis via Let's Encrypt en zit bij vrijwel elke fatsoenlijke hostingpartij inbegrepen. Die certificaten zijn negentig dagen geldig en worden automatisch vernieuwd. Controleer wel of dat vernieuwen echt automatisch gaat, want Let's Encrypt is in 2025 gestopt met de herinneringsmails over verlopende certificaten. Wat er in zo'n certificaat staat en welke soorten er zijn, staat in het artikel over het SSL-certificaat.
Reken erop dat certificaten korter geldig worden. De browsermakers en certificaatuitgevers hebben in 2025 afgesproken de maximale geldigheidsduur in stappen terug te brengen tot ongeveer zeven weken. Handmatig vernieuwen wordt daarmee onhoudbaar.
Let bij het overzetten op gemengde inhoud: een beveiligde pagina die nog een afbeelding of een script via de onbeveiligde weg ophaalt. Het script wordt dan geblokkeerd en je browser meldt dat de verbinding niet volledig veilig is. Je vindt dat in de foutmeldingen van je browser, en bij WordPress zit het meestal in oude afbeeldingsadressen die nog met http in de database staan.
HTTP/2 en HTTP/3
Nieuwere versies van hetzelfde protocol, allemaal gericht op snelheid. HTTP/1.1 stamt uit 1997 en werd in 1999 herzien, HTTP/2 werd in mei 2015 vastgelegd en HTTP/3 in juni 2022.
Bij HTTP/1.1 werden verzoeken over een verbinding achter elkaar afgehandeld. Bij een pagina met tachtig onderdelen leverde dat een file op, die browsers omzeilden door meerdere verbindingen tegelijk te openen. HTTP/2 handelt alle verzoeken door elkaar af over één verbinding en verstuurt de kopregels gecomprimeerd in plaats van uitgeschreven.
HTTP/3 gebruikt een andere onderliggende techniek, QUIC, die niet op TCP maar op UDP draait. Het voordeel merk je vooral op wisselende mobiele verbindingen: raakt een enkel pakketje kwijt, dan houdt dat de rest niet meer op, en overstappen van wifi naar het mobiele netwerk breekt de verbinding niet af.
Je hoeft hier zelf niets voor te doen behalve een hostingpartij kiezen die het ondersteunt. De meeste doen dat. Eén oude adviesregel kun je overboord gooien: het samenvoegen van je stijlbestanden tot één groot bestand was een truc tegen de file van HTTP/1.1 en levert daarna weinig meer op. Hetzelfde geldt voor server push, een functie van HTTP/2 die Chrome in 2022 heeft uitgezet omdat hij in de praktijk vaker kwaad dan goed deed.
Doorverwijzingen en waar het misgaat
Een doorverwijzing is een antwoord uit de 300-reeks met een Location-kopregel erbij. De browser volgt hem automatisch, en juist daardoor merk je niet hoe vaak het misgaat.
Het eerste probleem is de keten. Je site verwijst http naar https, daarna zonder www naar met www, daarna de oude URL naar de nieuwe. Dat zijn drie stappen voor één bezoeker, en op een trage mobiele verbinding merk je dat. Zoekmachines volgen een keten maar een beperkt aantal stappen. Verwijs daarom altijd rechtstreeks naar het eindadres.
Het tweede is de lus. Je server verwijst A naar B en B weer naar A, meestal doordat er twee regels tegelijk actief zijn: één in je serverconfiguratie en één in een plugin. De browser geeft dan een melding dat de pagina te vaak doorverwijst.
Het derde is de verkeerde soort. Bij een definitieve verhuizing hoort een 301, en met een omleiding in JavaScript draagt je opgebouwde waarde niet over. Hoe adressen zijn opgebouwd staat in het artikel over de URL.
Zorg tot slot dat je site maar op één adres bereikbaar is. Met en zonder www, met en zonder afsluitende schuine streep, met http en met https: kies er één en verwijs de rest daar in één stap naartoe.
Hoe je zelf ziet wat een server antwoordt
Dit kost dertig seconden en het scheelt je een uur discussie met je bouwer.
In je browser druk je op F12 en kies je het tabblad Netwerk. Herlaad de pagina en je ziet elk verzoek, de statuscode, de grootte en hoe lang het duurde. Klik je op een regel, dan zie je de kopregels van het verzoek en van het antwoord.
Wil je alleen de kopregels van één adres, dan is de opdrachtregel sneller. Met curl gevolgd door de optie voor alleen kopregels zie je in twee regels wat er terugkomt. Voeg je de optie toe die doorverwijzingen volgt, dan zie je de hele keten met elke tussenstap erbij. Dat is de manier om een keten van doorverwijzingen te betrappen.
Voor je eigen site is Search Console de derde bron. De URL-inspectie laat zien welk antwoord Google bij zijn laatste bezoek kreeg, en het pagina-overzicht groepeert je adressen op reden: niet gevonden, serverfout, pagina met omleiding, geblokkeerd. Dat zijn precies de statuscodes van hierboven, in gewone taal.
Draai je achter een dienst als Cloudflare, dan kun je codes tegenkomen die niet in de standaard staan. De 520-reeks is van Cloudflare zelf en betekent dat de tussenpartij je eigen server niet kon bereiken. Dat is een aanwijzing dat het probleem achter de tussenpartij zit, niet ervoor.
Kijk hoe dan ook eerst naar de statuscode voordat je iets aanpast. Een 500 los je op in je code of je plugins, een 403 in je rechten of je firewall, een 404 in je adressen. Dat zijn drie verschillende problemen die er op het scherm hetzelfde uitzien.
Wat er in je logboek staat
Je server schrijft elk verzoek weg: het IP-adres, het tijdstip, het opgevraagde pad, de statuscode, de omvang en het programma dat het opvroeg. Bij een storing is dat de eerste plek om te kijken, want daar zie je of de fout überhaupt bij jou aankwam.
Een IP-adres geldt in de EU als persoonsgegeven. Het Hof van Justitie heeft dat in 2016 bevestigd voor een dynamisch adres dat een sitehouder bewaart. Je serverlogboeken vallen daarmee onder de AVG: je hebt er een grondslag voor nodig, in de praktijk je gerechtvaardigd belang bij beveiliging en foutopsporing, en je bewaart ze niet langer dan nodig. Vraag je hostingpartij hoe lang zij ze bewaren, want vaak staat dat op een half jaar zonder dat iemand dat ooit heeft afgewogen.
Twee kopregels lekken meer dan je denkt. De Referer verklapt aan elke externe partij vanaf welke pagina iemand kwam, inclusief zoekopdrachten of gegevens die in het adres staan. Met een Referrer-Policy beperk je wat er wordt meegestuurd. En Set-Cookie is de kopregel waarvoor je op grond van artikel 11.7a van de Telecommunicatiewet toestemming nodig hebt, tenzij het cookie strikt noodzakelijk is voor de dienst die de bezoeker vraagt.
Veelgestelde vragen over HTTP
Wat betekent HTTP?
HTTP staat voor hypertext transfer protocol. Het zijn de afspraken waarmee een browser een pagina opvraagt bij een webserver en waarmee die server antwoordt. Elk bezoek aan een website bestaat uit tientallen van die vraag-en-antwoordrondes.
Wat is het verschil tussen HTTP en HTTPS?
Bij https is de verbinding versleuteld met TLS, zodat niemand onderweg kan meelezen of iets kan aanpassen. Het protocol eronder is hetzelfde. Chrome verving het bekende slotje in 2023 door een instellingenpictogram, omdat te veel mensen dachten dat zo'n slotje betekende dat een site betrouwbaar was. Het zegt alleen iets over de verbinding, niet over wie erachter zit.
Wat betekent foutcode 404?
De server heeft de pagina niet gevonden op het opgevraagde adres. De verbinding werkt en de site draait, alleen dit adres bestaat niet of niet meer. Meestal komt het door een typefout in een link, een pagina die is verwijderd of een adres dat is gewijzigd zonder doorverwijzing.
Wat betekent een 500-fout?
Er ging iets mis in de software op de server. Bij WordPress is dat vrijwel altijd een plugin, een thema-update of een PHP-fout. Zet je foutlogboek aan of vraag het op bij je hostingpartij, want de melding op het scherm zelf vertelt bewust niets. Een recente back-up terugzetten is de snelste weg als je onder tijdsdruk staat.
Wat is een 301-redirect?
Een permanente doorverwijzing van een oud adres naar een nieuw adres. Bezoekers komen automatisch op de nieuwe pagina en zoekmachines verplaatsen het adres in hun index, inclusief de waarde die de oude pagina had opgebouwd. Dit is wat je gebruikt bij een verhuizing of een nieuwe website.
Wat is het verschil tussen een 301 en een 302?
Een 301 zegt dat de verhuizing definitief is, een 302 dat hij tijdelijk is. Bij een 302 houdt een zoekmachine het oude adres aan als het blijvende adres. Gebruik een 302 alleen als de pagina echt terugkomt op het oude adres, bijvoorbeeld tijdens een tijdelijke actie.
Wat betekent 403 forbidden?
De server heeft het verzoek begrepen en weigert het uit te voeren. De pagina bestaat dus wel. Bij een website komt dat meestal door een beveiligingsplugin, een firewall bij je hosting of verkeerd ingestelde bestandsrechten. Krijgt Google een 403, dan verdwijnt de pagina op termijn uit de zoekresultaten.
Wat betekent 503?
De server is tijdelijk niet beschikbaar, bijvoorbeeld door onderhoud of overbelasting. Dit is de code die je wilt sturen als je site even uit de lucht is, want zoekmachines komen dan later terug zonder je pagina's te laten vallen. Duurt het dagen, dan verdwijnen ze alsnog.
Wat is een 304-antwoord?
Een bevestiging dat een bestand niet is gewijzigd sinds de browser het de vorige keer ophaalde. Er komt geen inhoud mee, alleen het bericht dat de bewaarde kopie nog mag worden gebruikt. Dat maakt herhaalbezoeken merkbaar sneller en het is een teken dat je caching goed staat.
Waarom staat er "niet veilig" bij mijn website?
Omdat je pagina via gewoon HTTP wordt geladen, of omdat je certificaat is verlopen of niet bij je domeinnaam past. Blijft de melding staan terwijl je certificaat klopt, kijk dan naar gemengde inhoud: onderdelen op de pagina die nog via de onbeveiligde weg worden opgehaald.
Hoe zie ik welke statuscode een pagina teruggeeft?
Druk in je browser op F12, open het tabblad Netwerk en herlaad de pagina. In de eerste regel staat de statuscode van het hoofdverzoek. Op de opdrachtregel gaat het sneller met curl en de optie voor alleen kopregels. Voor je eigen site laat de URL-inspectie in Search Console zien wat Google kreeg.
Is HTTP/3 sneller dan HTTP/2?
Op een stabiele verbinding merk je weinig verschil. Op een wisselende mobiele verbinding is HTTP/3 duidelijk beter, omdat een verloren pakketje de rest van het verkeer niet ophoudt en omdat de verbinding blijft bestaan als je van wifi naar mobiel overschakelt. Je zet het niet zelf aan, dat doet je hostingpartij of je CDN.
Wat is gemengde inhoud?
Een pagina die zelf via https wordt geladen maar onderdelen ophaalt via http. Browsers blokkeren scripts en stijlbestanden die zo binnenkomen en waarschuwen bij afbeeldingen. Bij WordPress zit de oorzaak meestal in oude adressen in de database, die je met een zoek-en-vervangactie over de database oplost.
Verlies ik bezoekers als ik overstap op https?
Niet als je het goed doet. Verwijs elk adres met http in één stap naar hetzelfde adres met https, pas je interne links aan en meld de https-versie aan in Search Console. Een kortdurende schommeling in je posities is normaal. Wat je wel kost is het overslaan van die doorverwijzingen, want dan bestaat je site ineens twee keer.
Dit artikel hoort bij Internet Marketing Begrippen. Daar vind je meer uitleg over hetzelfde onderwerp.
