API:Cross-site requests/cs

Pokud uživatelský skript nebo gadget potřebuje provést volání API proti jinému webu MediaWiki (např. skript na anglické Wikipedii potřebuje zkontrolovat informace o obrázku na Commons), musí použít JSONP nebo CORS (sdílení zdrojů mezi zdroji).



Použití JSONP
API přijímá parametr, jehož hodnotou je funkce JavaScriptu, do které bude zabalen výsledek JSON. To lze použít k volání rozhraní API na vzdáleném webu dynamickým přidáním značek do dokumentu.

Příklad


Požadavek GET


Odpověď


Použití CORS
MediaWiki API vyžaduje, aby byl  zadán jako parametr řetězce dotazu, přičemž hodnotou je stránka, ze které požadavek pochází, což je porovnáno s hlavičkou Origin vyžadovanou protokolem CORS. Všimněte si, že tento parametr musí být zahrnut v každém pre-flight požadavku, a proto by měl být zahrnut v části řetězce dotazu v identifikátoru URI požadavku i pro požadavky POST.

Když je zadán parametr  a požadavek nevrátí úspěšnou odpověď CORS, MediaWiki≥1.30 vrátí hlavičku $rejection se stručným důvodem selhání, např. v případě neshodného původu nebo nepodporovaných hlaviček v hlavičce požadavku $reqheaders.



Neověřené požadavky CORS
Neautentizované požadavky CORS mohou být provedeny z libovolného zdroje nastavením parametru požadavku  na. V tomto případě MediaWiki zahrne do odpovědi hlavičku  a zpracuje požadavek, jako by byl odhlášen.

Příklad


Požadavek GET


Odpověď


Ověřené požadavky CORS
Chcete-li provést ověřený požadavek CORS, musí být nastavení  vzdálené wiki nastaveno tak, aby umožňovalo původní web. Pokud kontrola původu CORS projde, MediaWiki zahrne do odpovědi hlavičku, takže mohou být odeslány ověřovací soubory cookie.

obsahuje další pokyny a příklady, jak zpracovat požadavky CORS v JavaScriptu.



Další poznámky

 * Podrobné rozdíly mezi JSONP a CORS jsou k dispozici na CORS proti JSONP.

