Sobes.tech
Middle

Waarom wordt de OPTIONS-methode verzonden in een HTTP-verzoek voordat GET/POST-verzoeken worden uitgevoerd?

sobes.tech AI

Antwoord van AI

De OPTIONS-methode wordt gebruikt om de beschikbare methoden en andere geparametreerde opties voor een webresource of server te bepalen, zonder dat hiervoor een speciale actie of toegang tot de resource zelf nodig is. Het maakt deel uit van het CORS-mechanisme (Cross-Origin Resource Sharing).

Wanneer een webpagina probeert een verzoek te doen naar een resource op een ander domein (cross-origin verzoek), kan de browser een preflight-verzoek sturen met de methode OPTIONS. Dit verzoek bevat headers zoals Access-Control-Request-Method en Access-Control-Request-Headers, die aangeven welke HTTP-methode en headers in het daadwerkelijke verzoek gebruikt zullen worden.

De server die het OPTIONS-verzoek ontvangt, kan antwoorden met headers zoals Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers en Access-Control-Max-Age, om de browser te informeren of het daadwerkelijke verzoek is toegestaan en welke methoden/headers acceptabel zijn.

Als de server het verzoek toestaat, gaat de browser door met het uitvoeren van het daadwerkelijke verzoek (GET, POST, etc.). Zo niet, dan wordt het verzoek door de browser geblokkeerd, waardoor de server wordt beschermd tegen ongeautoriseerde cross-origin verzoeken.

Het OPTIONS-verzoek wordt niet vóór elke GET/POST-verzoek gestuurd, maar alleen vóór bepaalde typen cross-origin verzoeken die als "niet-veilig" (non-simple) worden beschouwd. Eenvoudige verzoeken (bijvoorbeeld GET of POST met bepaalde content-typen en zonder aangepaste headers) worden zonder voorafgaand OPTIONS-verzoek verzonden.

# Voorbeeld van headers voor een OPTIONS-verzoek
# Access-Control-Request-Method: POST
# Access-Control-Request-Headers: Content-Type, Authorization
# Origin: http://client-domain.com

# Voorbeeld van serverantwoordheaders op OPTIONS
# Access-Control-Allow-Origin: http://client-domain.com
# Access-Control-Allow-Methods: POST, GET, OPTIONS
# Access-Control-Allow-Headers: Content-Type, Authorization
# Access-Control-Max-Age: 86400 # Cacheer het preflight-resultaat voor 24 uur

Over het algemeen is het een beveiligingsmechanisme om de toegang tot resources te controleren bij cross-origin verzoeken, waarmee de server kan bepalen of de browser de toegestane acties zal uitvoeren voordat de hoofdverzoek wordt verzonden.