jQuery Academy · Les

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.

Les 3 van 312 stappen

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.com kan niet rechtstreeks gegevens ophalen van api.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 de src ervan 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.

Gratis beginnen

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

  1. AJAX-verzoeken effectief configureren
  2. AJAX-fouten en -successen afhandelen
  3. Cross-domain AJAX (CORS/JSONP)
← Terug naar jQuery Academy