Een HTTP header is een stukje extra informatie dat aan elk webverzoek en antwoord hangt. De eigenlijke pagina of data is de body, en de headers eromheen beschrijven die body: wat voor inhoud het is, hoe groot, wie hem stuurde, of hij gecached mag worden en meer. Ze reizen samen mee bovenop het HTTP-protocol, maar je ziet ze nooit in de pagina zelf.

Denk aan een pakket. De doos bevat de spullen, maar het verzendlabel aan de buitenkant vertelt de koerier het adres, het gewicht, of het breekbaar is en hoe het behandeld moet worden. HTTP headers zijn dat label. Een Content-Type-header vertelt de browser dat hij HTML of een afbeelding ontvangt. Een Cache-Control-header vertelt een CDN hoe lang hij een kopie mag bewaren voordat hij een verse ophaalt.

Headers regelen ook belangrijke zaken achter de schermen. Security-headers kunnen bepaalde aanvallen blokkeren, en CORS-headers bepalen of de ene website data van de andere mag lezen. Een header als Strict-Transport-Security dwingt bijvoorbeeld elk volgend bezoek af over HTTPS, en een Content-Security-Policy-header beperkt welke scripts een pagina überhaupt mag draaien. Ze gaan trouwens beide kanten op: je browser stuurt request-headers die zeggen welke talen je voorkeur hebben en welke browser je gebruikt, en de server antwoordt met response-headers die beschrijven wat hij terugstuurt. Zet je ze goed, dan merkt een bezoeker er niets van. Zet je ze fout, dan breekt een functie geruisloos of lekt er data.

Bij TopDevs zetten we caching- en security-headers bij elk project bewust, want deze kleine onzichtbare regels hebben een onevenredig groot effect op snelheid en veiligheid.