Begrip: CORS Preflight Requests
Als een HTTP Request een side-effect heeft, i.e. als er data aangepast wordt op de server (PUT, DELETE, POST (enkel als het content type niet application/x-www-form-urlencoded, multipart/form-data of text/plain is)), wordt er een preflight request uitgevoerd.
Het preflight request wordt verstuurd voor het echte request. De browser vraagt via de HTTP OPTIONS methode aan de server of het PUT, DELETE of POST request uitgevoerd mag worden. Als de server de juiste headers teruggeeft, wordt het echte request verstuurd, anders wordt het geblokkeerd.
Een preflight request moet minstens twee headers teruggeven, de eerste header Access-Control-Allow-Origin wordt ook gebruikt voor GET en POST requests. De tweede header is Access-Control-Allow-Methods, hiermee wordt aangegeven welke HTTP-methodes toegestaan zijn voor een bepaald endpoint.
Naast deze twee verplichte headers zijn er ook verschillende optionele:
- Access-Control-Allow-Headers: De headers die toegestaan zijn in het PUT, DELETE of POST request.
- Access-Control-Allow-Credentials: Of credentials (cookies of de Authorization header) toegestaan zijn (true/false).
- Access-Control-Expose-Headers: De headers die door de client uitgelezen mogen worden in JavaScript code.
- Access-Control-Max-Age: Geeft aan hoeveel seconden het resultaat van een preflight request bewaard mag worden door de browser.