Basis van webtechnologie
JavaScript op een pagina van https://app.example.com gebruikt fetch om een POST-verzoek met een body van Content-Type: application/json naar https://api.example.net/orders te sturen. Welke beschrijving van het gedrag van CORS in dit geval is juist?
- ACORS werkt ook buiten browsers, dus zonder toestemming van de server wordt zelfs een POST vanuit een opdrachtregeltool onderweg in het netwerk tegengehouden
- BDe browser stuurt eerst een voorafgaande controle (een preflight) met de methode OPTIONS, en verstuurt de eigenlijke POST alleen als de server in zijn headers toestemming geeft
- CVerzoeken naar een andere origin worden altijd zonder controle verzonden, en de JavaScript van de pagina kan het antwoord lezen, ook als de server er niets aan toevoegt
Antwoord en toelichting tonen
Antwoord: B. De browser stuurt eerst een voorafgaande controle (een preflight) met de methode OPTIONS, en verstuurt de eigenlijke POST alleen als de server in zijn headers toestemming geeft
CORS is een mechanisme dat verzoeken naar andere origins, en het lezen van de antwoorden daarop, die door de same-origin policy worden beperkt, toestaat binnen de grenzen die de server toelaat. Een POST met Content-Type: application/json is een soort verzoek dat een eenvoudig verzonden formulier niet kan maken, dus de browser gebruikt eerst OPTIONS om de methode en de headers op te geven die hij zal gebruiken en vraagt om toestemming. Geeft het antwoord van de server geen toestemming met headers zoals Access-Control-Allow-Origin, dan verstuurt de browser het eigenlijke verzoek niet. CORS is een regel die de browser handhaaft, dus de server moet zichzelf daarnaast beschermen met authenticatie en controle van bevoegdheden.