ローカルの 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 を見付けるまで、だいぶ回り道してしまいました。
ちゃんちゃん♪
コメント