Cross-domain AJAX (CORS/JSONP)
Krijg inzicht in technieken voor cross-domain AJAX-verzoeken met JSONP of door CORS-headers op de server te configureren voor veilige gegevensuitwisseling, en pas deze toe.
Cross-domain AJAX (CORS/JSONP) is een gratis jQuery Academy-les op CoddyKit. Dit is les 3 van 3. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject jQuery Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus jQuery Academy bevat in totaal 3 lessen.
AJAX tussen domeinen: de uitdaging
Wanneer je website gegevens probeert op te halen van een andere website, heet dit een AJAX-verzoek tussen domeinen. Dit is vaak lastig!
Webbrowsers hebben standaard een beveiligingsregel die voorkomt dat een webpagina verzoeken doet aan een ander domein dan het domein waaruit de pagina afkomstig is. Deze regel beschermt je gegevens.
Hetzelfde-oorsprongbeleid begrijpen
De beveiligingsregel die we zojuist noemden, heet het Same-Origin Policy (SOP). Dit is een fundamentele beveiligingsfunctie van browsers.
SOP bepaalt dat een webbrowser scripts in een eerste webpagina alleen toegang geeft tot gegevens in een tweede webpagina als beide webpagina's dezelfde oorsprong hebben (domein, protocol en poort).
- Voorbeeld: Een pagina van
mywebsite.comkan niet rechtstreeks gegevens ophalen vanapi.anotherdomain.com.
CORS: een moderne oplossing
Om verzoeken tussen domeinen veilig toe te staan, heeft de webgemeenschap Cross-Origin Resource Sharing (CORS) ontwikkeld. Dit is de moderne, gestandaardiseerde manier om hiermee om te gaan.
CORS werkt doordat de server de browser expliciet laat weten dat bepaalde andere domeinen toegang tot zijn bronnen mogen hebben.
CORS: configuratie aan de serverkant
CORS wordt voornamelijk geconfigureerd op de server die de gegevens aanbiedt. De server stuurt speciale HTTP-headers mee in zijn antwoord om aan te geven welke origins zijn toegestaan.
De belangrijkste header is Access-Control-Allow-Origin. Deze geeft aan welke domeinen toegang tot de bron hebben.
Access-Control-Allow-Origin: *(staat elk domein toe)Access-Control-Allow-Origin: https://yourdomain.com(staat slechts één specifiek domein toe)
CORS: clientverzoeken met jQuery
Een CORS-verzoek doen aan de clientkant (met jQuery) verschilt vaak niet van een normaal AJAX-verzoek, zolang de server correct is geconfigureerd.
jQuery handelt de communicatie op browserniveau af. Je hoeft je aanroep van $.ajax() alleen naar de URL tussen domeinen te laten verwijzen.
$.ajax({
url: "https://api.example.com/data", // Server must allow CORS
method: "GET",
success: function(data) {
console.log("CORS success:", data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.error("CORS Error:", textStatus, errorThrown);
}
});CORS: voorafgaande verzoeken (OPTIONS)
Bij bepaalde "complexe" CORS-verzoeken voeren browsers een voorafgaand verzoek uit voordat ze het daadwerkelijke verzoek verzenden. Dit is een extra beveiligingsstap.
Een voorafgaand verzoek gebruikt de HTTP-methode OPTIONS om de server om toestemming te vragen. Als de server die verleent, verzendt de browser vervolgens het daadwerkelijke verzoek (bijvoorbeeld PUT, DELETE of verzoeken met aangepaste headers).
JSONP: een ouder alternatief
Voordat CORS breed werd toegepast, was JSONP (JSON with Padding) een veelgebruikte omweg voor verzoeken tussen domeinen, vooral voor oudere browsers of API's.
JSONP omzeilt het Same-Origin Policy door op creatieve wijze gebruik te maken van het feit dat browsers <script>-tags van elk domein mogen laden.
JSONP: de werking
Zo werkt JSONP:
- Je maakt dynamisch een
<script>-tag en stelt desrcervan in op de URL tussen domeinen. - De server, die een JSONP-verzoek verwacht, verpakt zijn JSON-gegevens in een functieaanroep (de 'padding').
- De browser voert dit script uit en roept een globaal gedefinieerde functie op je pagina aan, met de gegevens als argument.
JSONP: implementatie met jQuery
jQuery vereenvoudigt de implementatie van JSONP aanzienlijk. Je hoeft alleen dataType: "jsonp" op te geven in je aanroep van $.ajax().
jQuery handelt automatisch het maken van de dynamische <script>-tag, het genereren van een unieke callbackfunctienaam en het uitvoeren daarvan bij aankomst van het antwoord af.
$.ajax({
url: "https://api.example.com/jsonp-data?callback=?", // Server must support JSONP
dataType: "jsonp",
success: function(data) {
console.log("JSONP success:", data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.error("JSONP Error:", textStatus, errorThrown);
}
});CORS versus JSONP: belangrijkste verschillen
Hoewel beide problemen met domeinoverschrijdende verzoeken aanpakken, hebben CORS en JSONP verschillende kenmerken:
- CORS: moderne standaard, gebruikt HTTP-headers, veilig, ondersteunt alle HTTP-methoden en vereist configuratie aan de serverkant.
- JSONP: oudere omweg, gebruikt
<script>-tags, minder veilig, ondersteunt alleen GET-verzoeken, is een techniek aan de clientkant en vereist dat de server het antwoord inpakt.
Snelle controle: domeinoverschrijdende verzoeken
Welke van de volgende beweringen over AJAX-verzoeken tussen domeinen zijn WAAR?
Samenvatting: domeinoverschrijdende verzoeken beheersen
Je hebt geleerd hoe je het Same-Origin Policy voor AJAX-verzoeken tussen domeinen kunt omzeilen!
- CORS is de moderne, veilige standaard en gebruikt HTTP-headers aan de serverkant voor toestemming.
- JSONP is een oudere, minder veilige omweg voor GET-verzoeken, waarbij dynamische
<script>-tags worden gebruikt.
Geef waar mogelijk altijd de voorkeur aan CORS, omdat dit veiliger en flexibeler is. JSONP is voornamelijk bedoeld voor oudere systemen of specifieke situaties.
Leer JavaScript met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 22
- Lessen
- 48
Veelgestelde vragen
Is de les “Cross-domain AJAX (CORS/JSONP)” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad jQuery Academy, waaronder “Cross-domain AJAX (CORS/JSONP)”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus jQuery Academy bevat in totaal 3 lessen.
Wat leer ik in “Cross-domain AJAX (CORS/JSONP)”?
Krijg inzicht in technieken voor cross-domain AJAX-verzoeken met JSONP of door CORS-headers op de server te configureren voor veilige gegevensuitwisseling, en pas deze toe. Je oefent met jQuery Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met jQuery Academy te beginnen?
Ervaring vooraf is niet nodig. jQuery Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 3.
Hoe lang duurt de les “Cross-domain AJAX (CORS/JSONP)”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over jQuery Academy?
Ja. Elke les over jQuery Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- AJAX-verzoeken effectief configureren
- AJAX-fouten en -successen afhandelen
- Cross-domain AJAX (CORS/JSONP)