MediaWiki API をローカルの Ajax で叩く方法

[ MediaWiki API をローカルの Ajax で叩く方法 ]

ローカルの file:// な HTML ファイル上で jQuery の $.ajax() 経由 MediaWiki の API を叩くサンプルを作っていたら、CORS のエラーが出てしまいました。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://test.wikipedia.org/w/api.php?action=query&list=search&utf8=true&format=json&srsearch=test. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

みたいな感じ。

結論

URL のパラメタに origin=* を追加したら、ちゃんと応答してくれました。

ブラウザのアドレスバーから API の URL 直接叩いた時には無かった HTTP リクエストヘッダ Origin: "null" がいかにも怪しかったのですが、ここを工夫する必要は無かったようです。

CORS Ajax で Google 検索したのがマズかったですね。Manual:CORS – MediaWiki の jQuery のサンプルも、URL のパラメタに origin=https://www.mediawiki.org という要領で、罠っぽいです。

Wikipedia API + Cross-origin requests – Stack Overflow を見付けるまで、だいぶ回り道してしまいました。

ちゃんちゃん♪

コメント

タイトルとURLをコピーしました