2016-12-11 7 views
1

私は個人的なwebappで作業していましたが、ちょっとした打撃を受けました。私のAPI呼び出しは、いくつかのAPIに対してのみ機能し、他のAPIに対しては機能しません。私は通常それと同様のエラーメッセージが表示されますと動作しないもののために。AJAXリクエストでCORSを設定する方法

XMLHttpRequest cannot load https://api.meetup.com/2/cities. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 

いくつかの調査をした後、私はCORSがセットアップされていないことを知っています。私はAJAXリクエストを作成する際にこれをクライアントに設定することが可能かどうか疑問に思っていました。現在の私のやり方はそうです

var handleRequest = function(request){ 
    $.ajax({ 
    type: "GET", 
    url: request, 
    success: function(data) { 
    var rawJSON = JSON.stringify(data, null, 2); 
    editor.setValue(rawJSON); 
    }, 
    dataType: 'json' 
}); 
+1

データを要求するサーバーは、CORSを有効にする必要があります。これをクライアント側で行う方法はありません。 –

+0

いいえ。これは、クロスオリジンのリクエスト制限が完全に無意味なものになるためです。 – JJJ

+0

次に、郵便配達の仕事のようなアプリケーションはどうですか?ユーザーがAPI呼び出しを行うために構築されています。 –

答えて

3

アクセスしようとしているサーバーにアクセス権が付与されている必要があります。 IT管​​理者は、外部サーバーへのアクセスを許可するURLを提供する必要があります。ヒットしようとしているサーバーにCORSを設定する必要があります。 http://enable-cors.org/

2

彼らのドキュメントによると、彼らはJSONPをサポートしています。

https://www.meetup.com/meetup_api/

これは、CORSの周りにあなたの方法です。

+0

これは、アプリケーションが行うAPI呼び出しの単なる例です。私はちょうど郵便配達のような何かを楽しいものにしています。おそらく間違った質問をしていることに気づきました。正しい認証の詳細があれば、私はどのapi呼び出しからも応答を受け取れるようにすることは可能ですか?例えばjsonpとjsonをサポートする他の人をサポートするapis? –

+0

それはすべてあなたが呼び出しようとしているサービスによって異なります。サービスがJSONPをサポートし、使用できるようにすると、本質的に(実際にはスクリプトとして応答をロードするため)正常です。他のケースでは、ブラウザーは元のヘッダーの応答が一致しないため、ブラウザーが応答に満足するようにサーバーコードにアクセスする必要があります。 –

+0

私はまだ少し混乱しています。この問題を抱えるブラウザで実行されているのはアプリケーションだけですか?例えば、私は簡単に同じ呼び出しを行い、応答を得るためにカールを使うことができますが、私がブラウザで自分のアプリケーションを使うと失敗するでしょう。 –

関連する問題