API:Webwerwe versoeke

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page API:Cross-site requests and the translation is 100% complete.
Other languages:
Afrikaans • ‎Deutsch • ‎English • ‎dansk • ‎español • ‎français • ‎polski • ‎română • ‎русский • ‎ไทย • ‎ဘာသာ မန် • ‎中文 • ‎日本語 • ‎한국어

As 'n gebruikerskrip of gadget 'n API moet oproep teen 'n ander MediaWiki-werf(bv.'N skrip op die Engelse Wikipedie moet beeldinligting op Commons nagaam),moet ditJSONP of CORS

JSONP gebruik

Die API se format=json aanvaar 'n callback parameter,waarvan die waarde 'n Javascript funksie is,waarin die JSON resultaat toegedraai sal word. Dit kan gebruik word om die API op 'n afgeleë webwerf te noem deur <script> etikette by die dokument dinamies te voeg.

Enige JSONP versoeke sal verwerk word asof u afgemeld is (dit wil sê as 'n anonieme gebruiker) selfs nadat u op die eksterne wiki aangemeld het.

= Voorbeeld

Kry versoek

Kry de titels van drie ewekansige bladsye van die Engelse Wikipedia

Voorbeeldkode

var apiEndpoint = "https://en.wikipedia.org/w/api.php";
var params = "action=query&list=random&rnlimit=3&format=json";

/**
 * Die funksie om die resultaat toe te maak.
 */
var callback = function (response) {
    var pages = response.query.random; // Verwerk die uitvoer om die titels te kry.
    Object.keys(pages).forEach(function(key) {
        console.log(pages[key].title);
    });
};

var scriptTag = document.createElement("script"); // Skep dinamies 'n "skrif" etiket.
scriptTag.src = apiEndpoint + "?" + params + "&callback=callback"; // Wys na die navraagstring.

document.body.appendChild(scriptTag); // Voeg die skripmerk by die dokument

Antwoord

Kache Aye Shoi
Talk:Sarbka, Wągrowiec County
Category:Nakhon Ratchasima Province

CORS gebruik

Die MediaWiki API vereis dat die oorsprong verskaf word as 'n navraag stringparameter,met die webwerf waarvandaan die versoek ontstaan,wat ooreenstem met die oorsprongkop wat deur die CORS protokol benodig word. Let daarop dat hierdie parameter ingesluit moet word in enige voorvlugversoek, en dat dit ook in die vrae-stringgedeelte van die versoek-URI ingesluit moet word, selfs vir POST-versoeke.

Wanneer die origin parameter verskaf word en die versoek nie 'n suksesvolle CORS antwoord lewer nie, sal MediaWiki ≥1.30 'n $verwerpingskopie terugstuur met 'n kort rede vir die mislukking, bv. in die geval van oorsprong wat nie ooreenstem nie of kopkoppe wat nie ondersteun word nie, in 'n $req headers versoek kop.

Ongeautoriseerde CORS-versoeke

Ongeverifieerde CORS versoeke kan van enige oorsprong gerig word deur die origin versoekparameter op * te stel. In hierdie geval sal MediaWiki die Access-Control-Allow-Credentials: false kop in die antwoord insluit en die versoek verwerk asof dit afgemeld is.

Voorbeeld

Kry versoek

Kry die name van die eerste drie beelde van Wikimedia Commons af.

Voorbeeldkode

var apiEndpoint = "https://commons.wikimedia.org/w/api.php";
var params = "action=query&list=allimages&ailimit=3&format=json";

/**
 * Stuur die versoek om die beelde te kry
 */
fetch(apiEndpoint + "?" + params + "&origin=*")
    .then(function(response){return response.json();})
    .then(function(response) {
          var allimages = response.query.allimages; // Vewerk die uitvoer om die beelde te kry
          Object.keys(allimages).forEach(function(key) {
               console.log(allimages[key].name);
          });
     });

Antwoord

!!!!!_Mdina_Fortifications,_Ditch,_Bridge_and_Main_Gate.jpg
!!!!_Mdina_buildings_!!!!.jpg
!!!!_Palazzo_Dorell_ancillary_building.jpg

Geverifieerde CORS versoeke

Om 'n geverifieerde CORS-versoek te rig, moet die eksterne wiki se $wgCrossSiteAJAXdomains instelling ingestel word om die oorsprongwebwerf toe te laat. As die CORS-oorsprongstjek slaag, sal MediaWiki die Access-Control-Allow-Credentials: true kop in die antwoord insluit, dus kan verifikasiekoekies gestuur word.

Manual:CORS bevat meer instruksies en voorbeelde oor hoe om CORS versoeke in JavaScript te hanteer.

Addisionele notas

  • Gedetailleerde verskille tussen JSONP en CORS is beskikbaar by CORS vs JSONP.

Sien ook