API:Cross-site requests/de

Wenn ein Benutzerskript oder Gadget einen API-Aufruf für eine andere MediaWiki-Site ausführen muss (z. B. muss ein Skript in der englischen Wikipedia Bildinformationen in Commons überprüfen), muss es JSONP oder CORS anwenden.

Benutzung von JSONP
Die API  nimmt einen   -Parameter an, der eine JavaScript-Funktion benennt, in das das JSON-Ergebnis eingebunden wird. Das kann man einsetzen, um die API auf einer entfernten Seite aufzurufen, indem man dynamische -Tags zum Dokument hinzufügt.

Benutzung von CORS
Für die MediaWiki-API muss der  als Abfragezeichenfolgenparameter angegeben werden, wobei der Wert die Site ist, von der die Anforderung stammt, und mit dem vom CORS-Protokoll geforderten Origin-Header abgeglichen wird. Beachte dass dieser Parameter in allen vorherigen Anfragen eingebunden werden muss und auch in den Teil der Abfrage-Strings der anfragenden URI, sogar bei POST-Anfragen.

Wenn der Parameter  geliefert wird und die Abfrage keine erfolgreiche CORS-Antwort ausgibt, wird MediaWiki≥1.30  einen  -Header mit einer kurzen Begründung für das Fehlschlagen ausgeben, z.B. im Falle nicht übereinstimmender Ursprünge oder nicht unterstützter Header einen  -Abfrage-Header.

Nicht authentifizierte CORS-Anfragen
Nicht authentifizierte CORS-Abfragen können von jedem Ursprung aus gestellt werden, indem der Abfrage-Parameter  auf   gesetzt wird. In diesem Fall setzt MediaWiki den Header  in die Antwort ein und fährt mit der Abfrage fort, als wäre sie unangemeldet gestellt worden.

Authentifizierte CORS-Anfragen
Um eine authentifizierte CORS-Anfrage durchzuführen, muss  des entfernten Wikis so eingestellt sein, dass es die Herkunftsseite erlaubt. Falls die CORS-Herkunftsübeprüfung durchläuft, wird MediaWiki den -Header in die Antwort einbinden, sodass Authentifizierungs-Cookies gesendet werden können.

enthält weitere Anleitungen und Beispiele zur Verwendung von CORS-Abfragen in JavaScript.

Zusätzliche Anmerkungen

 * Detaillierte Unterschiede zwischen JSONP und CORS sind verfügbar auf CORS vs JSONP.