Manual:CORS/fr

L'API MediaWiki supporte les requêtes CORS (cross-origin resource sharing) (en) si  est activé. C'est utile sur les sites Wikimedia, par exemple, pour permettre le téléversement d'images directement sur Commons depuis Wikipédia avec l'interface mobile.

Cette page détaille l'utilisation des requêtes CORS dans le code JavaScript pour communiquer entre les wikis de différents domaines.

Description
Pour que les requêtes CORS puissent passer, vous devez fournir un paramètre  dans la chaîne de la requête avec comme valeur, le protocole et l'hôte du wiki local (par exemple,  ). Cela doit correspondre à l'une des valeurs de sur le wiki distant.

If you wish the browser to use any cookies it might have for the domain, to keep the current user logged in, you also need to set the  field of   to.

Pour les requêtes anonymes, le paramètre  de la chaîne de requête peut être initialisé à   ce qui permettra les requêtes de n'importe où.

Exemples
Dans les exemples ci-dessous, nous supposons que le wiki local à partir duquel la requête a été émise est www.mediawiki.org, et que le wiki distant - celui vers lequel la requête est dirigée - est en.wikipedia.org.

Utiliser mediawiki.ForeignApi
Le module mediawiki.ForeignApi est une extension de mediawiki.api qui gère automatiquement les détails pour vous.

Un exemple qui vérifie si l'utilisateur est connecté sur le wiki distant :

A basic write API example. We're acquiring a  token and using it to set a persistent custom user preference that a gadget might use afterwards:

The same example can be rewritten more succinctly using some mediawiki.api helper methods, which are available for ForeignApi too:

Utiliser les méthodes jQuery
If you do not wish to use mediawiki.api for whatever reason, or if you're curious how this works at a lower level, here's how to implement the same functionality using plain jQuery AJAX functionality. You could even use plain XMLHttpRequest.

Un exemple qui vérifie si l'utilisateur est connecté sur le wiki distant :

Un exemple de base d'API d'écriture : Notez que  est une partie de l'URL parce que les requêtes POST de CORS sont préarrangées et que le paramètres de l'origine doit être inclus dans la requête de préarrangement.

CentralAuth
CentralAuth allows your code to authenticate on the foreign wiki as the user currently logged in on the local wiki using a centralauthtoken. This guarantees that the same associated account will be used for actions on both wikis, unlike regular CORS (which requires the user to have previously logged in to the foreign wiki).

If both the local and foreign wiki have CentralAuth installed, the mediawiki.ForeignApi mechanism is seamlessly extended to handle this for you. If you're implementing it yourself, see centralauthtoken for instructions on how to acquire a token (from the local wiki) and pass it to a request (to the foreign wiki).

Autres solutions
For anonymous requests you can use the JSONP format instead. This is simpler but slightly less secure (it fetches and executes arbitrary Javascript code from the wiki so an attacker who took over the MediaWiki site has an XSS vector against the remote site).