CORS
Is een afkorting van "Cross-Origin Resource Sharing." Met CORS kunnen scripts op webpagina's bronnen opvragen bij andere domeinen. De meeste webbrowsers blokkeren dit soort verzoeken standaard om veiligheidsredenen.
Een webpagina kan bronnen opvragen bij een ander domein — zolang de verzoeken vanuit de HTML komen. De <head>-sectie kan bijvoorbeeld verwijzen naar bronnen zoals CSS-bestanden, lettertypen en JS-bestanden van andere domeinen. Voorbeelden zijn Google Analytics-scripts, jQuery-bibliotheken en lettertypen die op een andere server worden gehost. Op dezelfde manier kan <body> afbeeldingen opvragen bij een CDN of ander domein. Voor cross-origin-bronverzoeken in de HTML zijn geen CORS-machtigingen nodig.
Wanneer een script of een iframe-element een cross-origin-verzoek doet, is CORS vereist. Een AJAX-methode — die wordt uitgevoerd nadat de pagina is geladen — kan bijvoorbeeld geen bron opvragen bij een ander domein. CORS overschrijft deze standaardinstelling van de browser en zorgt ervoor dat het verzoek wordt uitgevoerd.
CORS wordt geïmplementeerd met "access control"-HTTP-headers. Een serverbeheerder kan de antwoordheaders toevoegen of wijzigen die naar de browser van een client worden verzonden wanneer een webpagina wordt geopend. Deze instellingen, die kunnen worden toegepast op Apache- en IIS-servers, kunnen specifiek zijn voor een website of voor de hele server gelden. Hieronder staan veelgebruikte verzoek- en antwoordheaders:
CORS-verzoekheaders:
- Origin
- Access-Control-Request-Method
- Access-Control-Request-Headers
CORS-antwoordheaders:
- Access-Control-Allow-Origin
- Access-Control-Allow-Methods
- Access-Control-Expose-Headers
CORS-voorbeeld
Als een script op techterms.com met een GET-actie een bron opvraagt bij sharpened.com, kan het de volgende verzoekheaders verzenden:
Origin: https://techterms.com
Access-Control-Request-Method: GET
Om het verzoek toe te staan, kan sharpened.com antwoorden met de volgende headers:
Access-Control-Allow-Origin: https://techterms.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Origin kan worden ingesteld op specifieke domeinen of op een jokerteken met een sterretje (*). De instelling met een jokerteken staat cross-resource-verzoeken vanaf alle domeinen toe, wat een veiligheidsrisico kan vormen. Access-Control-Allow-Methods kan worden ingesteld op PUT, POST, DELETE en andere methoden, inclusief een instelling met een jokerteken (*) waarmee alle methoden worden toegestaan.
Test je kennis