2017-11-30 8 views
0

下記のAJAXリクエストをMediaWiki APIに送信し、コンソールに次のメッセージが表示されました:No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://preview.cs50.io' is therefore not allowed access.私は何も悪いことはしていません。私はheadersオプションを自分のAJAXリクエスト(私のドメインを値として持っていた起点キーを持つ単純なオブジェクト)に追加しようとしましたが、APIはそれを好きではありませんでした。MediaWikiでAJAXリクエストが拒否されたときのリクエストヘッダーの変更

ここでの回答は、セキュリティ上の理由からプログラマがoriginヘッダーを設定できないべきことを示しています。これは意味があります。それでも、私はAPIにアクセスする必要があります。私は頼りにしていますか?

私はMediaWiki APIとドキュメントで初めて作業しました。

$(document).ready(function() { 
     // future search parameter provided by user 
     var search = "french"; 
     // AJAX request options for MediaWiki API 
     var ajaxOptions = { 
      crossDomain: true, 
      dataType: "json", 
      url: "https://en.wikipedia.org/w/api.php", 
      method: "GET", 
      data: { 
       action:"query", 
       list:"search", 
       srsearch:search, 
       // titlesnippet may be more desirable, try both 
       srprop:"snippet", 
       srlimit:"50", 
       pwpprop:"title", 
       // may not be necessary given use of srlimit above, try and see 
       pwplimit:"50", 
       format:"json" 
      } 
     }; 
     // AJAX request 
     $.ajax(ajaxOptions).done(updateDOM); 

     function updateDOM (json) { 
      $("#message").html(JSON.stringify(json)); 
     } 

    }); 
+0

jsonpリクエストとして試す – charlietfl

+1

https://www.html5rocks.com/en/tutorials/cors/ –

答えて

1

これは、ドキュメントをより詳しく理解するための単なる教訓でした。 MediaWikiのドキュメントは永遠に続きます。特にAPIの経験が限られている場合やMediaWikiの経験がない場合は、APIフォレスト内で数多くのツリーを見ると簡単に失われます。

上記のような方法でAJAX/CORSリクエストを作成する場合は、単に追加してください。 。 。

origin:"*" 
ajaxOptionsオブジェクト内のデータオブジェクトの最後に、状況を解決する必要があります。

関連する問題