2016-05-04 13 views
1

このエラーは以前このサイトに掲載されていましたが、私はエラーを解決できましたが、私が実際に行ったことについての説明を探しています。だから私は、ウィキペディアビューアを作成していた学習プロジェクトとしてWikipedia API XMLHttpRequestが読み込めません

、そして私がしようとした最初のものは、ウィキペディアのAPIへの呼び出しを作ることだった。

$(document).ready(function() { 

    var wiki = "https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json" 

    $.getJSON(wiki, function(d) { 
    console.log(d); 
    }); 

}); 

これはXMLHttpRequest cannot load https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://conn3cted.uk.tn' is therefore not allowed access.

のエラーを返します

止めることになる、私はGETリクエスト(https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json&callback=?

の終わりに&callback=?を追加することで表示されるこのエラーを停止することができた。しかし、私は完全にcallback=?が何をしているかを理解していませんそれは間違っている?

編集:私はJSONPについて尋ね(?私は考えていない)との質問が<script>タグを使用して中心とされていることではないよとcallback=?を追加することで、この作品を作った理由は、私が求めています一方、これは、リンクされた質問に異なっています。

答えて

1

URLの最後にcallback=?を付けると、jQueryは<script>要素を生成し、XMLHttpRequestを使用する代わりにJSONP要求を行います。

this questionへの回答は、JSONPが同じ発信元ポリシーをどのようにハックするかを説明しています。

+0

ああ、 'callback =? 'はリクエストをAPIが受け入れるJSONPに変換するのですか?これがなければ、クロスドメインなので失敗しますか? Javascriptファイルに追加できるものはありますか? 'callback =? 'パラメータを付けずにこの作業を行うには? – OmisNomis

+0

それは私が言ったことです。あなたが引用したエラーメッセージには、それが書かれています。いいえ、ブラウザがJavaScriptバイパスセキュリティによってJavaScriptが行うことを特に制限するように設計されている場合は、愚かなことになります。 – Quentin

+0

ありがとうございます。ありがとうございます。 Wikipedia APIのドキュメントでは、GETリクエストにこのパラメータを使用して動作させる必要があるとは言いません。何らかの理由でヘッダーを設定し、 'callback =? 'の必要性を否定することが正しいのかどうかはわかりませんでした。 – OmisNomis

関連する問題