API:Cross-site requests/ru

Если пользовательскому скрипту или гаджету нужно сделать вызов API другого сайта на движке MediaWiki (например, скрипту на русской Википедии нужно проверить информацию изображения на Викискладе), необходимо использовать JSONP или CORS.



Использование JSONP
API  принимает параметр , значение которого является функцией JavaScript, в которую будет обёрнут результат JSON. Это может быть использовано, чтобы вызвать API на другом сайте, динамически добавляя теги к документу.

Пример


GET-запрос


Ответ


Использование CORS
API MediaWiki также требует, чтобы исходный сайт был указан как параметр строки запроса, со значением, являющимся сайтом, с которого исходит запрос, который проверяется на соответствие с требуемым протоколом CORS заголовком Origin. Обратите внимание, что этот заголовок должен быть включён в любой pre-flight запрос, и таким образом должен быть включён в часть строки запроса запрашиваемого URI даже для POST запросов.

Если указан параметр  и запрос не возвращает успешный ответ CORS, MediaWiki≥1.30 вернет заголовок $rejection с краткой причиной сбоя, например в случае несовпадения источников или неподдерживаемых заголовков в заголовке запроса $reqheaders.



Неаутентифицируемые CORS-запросы
Неаутентифицируемые CORS-запросы могут быть посланы с любого источника, если параметр  запроса задать как равный. В этом случае MediaWiki включит в ответ заголовок  и обработает запрос как посланный не зашедшим в учётную запись пользователем.

Пример


GET-запрос


Ответ


Аутентифицируемые CORS-запросы
Чтобы другая вики разрешала CORS-запросы,  должен быть установлен соответствующе, чтобы разрешить исходный сайт. Если проверка источника CORS проходит, MediaWiki включит заголовок  в ответ, чтобы куки аутентификации могли быть посланы.

содержит больше инструкций и примеров о том, как обрабатывать CORS-запросы через JavaScript.



Дополнительная информация

 * Подробно разница между JSONP и CORS рассматривается в CORS vs JSONP.

