Een preflight-verzoek is een type HTTP-verzoek dat door een webbrowser naar een server wordt verzonden voordat een hoofdaanvraag wordt gedaan. Het wordt gebruikt om te bepalen of de server de hoofdaanvraag zal accepteren en om informatie over de mogelijkheden en vereisten van de server te verzamelen.
Hier is een overzicht van hoe preflight-verzoeken werken:
- Browser bepaalt de noodzaak voor preflight: De browser controleert de HTTP-methode (bijv. PUT, DELETE, PATCH), headers en andere factoren van de hoofdaanvraag om te bepalen of een preflight-verzoek nodig is.
- Browser verzendt OPTIONS-verzoek: Als een preflight nodig is, verzendt de browser een OPTIONS-verzoek naar de server. Dit verzoek bevat de HTTP-methode, headers en URL van de hoofdaanvraag.
- Server reageert met toegestane methoden en headers: De server reageert op het OPTIONS-verzoek met een 200 OK-statuscode en een lijst met HTTP-methoden en headers die het toestaat voor de hoofdaanvraag.
- Browser maakt hoofdaanvraag: Als het antwoord van de server aangeeft dat de hoofdaanvraag is toegestaan, verzendt de browser deze.
Preflight-verzoeken zijn essentieel om compatibiliteit met cross-origin resource sharing (CORS) te garanderen. CORS is een mechanisme dat webpagina’s toestaat om aanvragen te doen naar servers op verschillende domeinen. Preflight-verzoeken helpen om te verifiëren dat de server de benodigde CORS-instellingen ondersteunt zodat de hoofdaanvraag succesvol kan zijn.
Hier zijn enkele veelvoorkomende scenario’s waarin preflight-verzoeken worden gebruikt:
- Cross-origin AJAX-verzoeken: Wanneer een webpagina een AJAX-verzoek doet naar een server op een ander domein, wordt vaak een preflight-verzoek verzonden om te controleren of de server cross-origin-verzoeken toestaat.
- WebSockets: WebSockets worden gebruikt voor full-duplex communicatie tussen een webbrowser en een server. Een preflight-verzoek wordt meestal verzonden voordat een WebSocket-verbinding wordt tot stand gebracht om compatibiliteit te garanderen.
- Fetch API: De Fetch API is een moderne API voor het doen van netwerkaanvragen in JavaScript. Preflight-verzoeken worden automatisch afgehandeld door de Fetch API.
Samenvattend zijn preflight-verzoeken een cruciaal onderdeel van het HTTP-protocol, waardoor webapplicaties effectief kunnen communiceren op verschillende domeinen en platforms.