API:Cross-site requests/fr

Si un script utilisateur ou un gadget nécessite une API pour communiquer avec un autre site MediaWiki (par exemple un script sur Wikipédia qui a besoin de vérifier une information d'une image sur Commons), il doit utiliser JSONP ou CORS (en).

Utilisation de JSONP
L'API  accepte un paramètre de retour (callback) qui nomme une fonction JavaScript dans laquelle la sortie JSON sera empaquetée. Ça peut-être utilisé pour appeler l'API sur un site distant en ajoutant des balises dynamiquement au document.

Remarquez que toute requête JSONP sera traitée comme non identifiée, même si la session du navigateur l'est auprès du wiki distant.

Utilisation de CORS
L'API MediaWiki demande que la  soit fournie comme paramètre de requête de chaîne, correctement nommée « origin », ce qui correspond à l'entête Origin demandée par le protocole CORS. Remarquez que ce paramètre doit être inclus dans chaque requête préparatoire et devrait donc être inclus dans la partie de chaîne de demande de la requête URI, même pour une requête de type POST.

Pour faire une requête CORS authentifiée, l'option  du wiki distant doit être renseignée de façon à ce que le site source soit accepté. Si la source du CORS est acceptée, MediaWiki inclura l'entête  dans la réponse, de manière à ce que le cookie d'authentification puisse être envoyé.

Les requêtes CORS non authentifiées peuvent être faites à partir d'une origine quelconque en positionnant le paramètre de requête « origin » à « * ». Dans ce cas MediaWiki va inclure l'entête  dans la réponse et va traiter la requête comme si l'utilisateur était déconnecté (dans le cas où les certificats ont été envoyés).

Quand le paramètre "origin" de la requête est fourni, MediaWiki (depuis la 1.30) renvoie un entête  avec un bref motif d'échec si la requête ne se termine pas par une réponse positive CORS, par exemple en cas d'origine discordante ou d'entêtes non supportés dans une requête d'entêtes.

Se reporter à Manual: CORS pour les instructions sur la manière de manipuler les requêtes CORS en JavaScript.