2016-05-31 7 views
0

私は別のサーバーにあるAPIを使用しています。奇妙なことは、それが最初に何の問題もなく働いていたということです、そして、私はcrossDomain: "true"追加このエラーメッセージjsonとjqueryで要求されたリソースエラーに「アクセス制御許可元」ヘッダーがありません

XMLHttpRequest cannot load http://www.thecocktaildb.com/api/json/v1/1/random.php? tagmode=any&type=POST&format=jsonp. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'myadress.com' is therefore not allowed acces 

を持って、それが一日のために働きました。今、それは再び働かないと私は検索し、私が見つけた多くのソリューションを試してみました。しかし、何も動作しません。問題は何ですか?どのように修正しますか? jsonの代わりにjsonpを試してください。​​と&コールバック=?何もしません。私も、CORSの拡張機能をインストールしました。しかし、たぶん同じエラー、私はAPI自体またはそれをホストしているサーバーを制御することはできません。これをどうすれば解決できますか?以下は私のコードです。私は右のあなたがあなたのページとは異なるドメインにAJAX callを行っていることを理解している場合

 function random() { 
     $(document).ready(function() { 
      $.getJSON("http://www.thecocktaildb.com/api/json/v1/1/random.php", { 
       tagmode: "any", 
       type: "POST", 
       format: 'jsonp', 
       crossDomain: "true" 
      }, function (data) { 
       console.log(data); 

       var result = ""; 
       $.each(data.drinks, function (index, value) { 
        result += "<p>" + value.idDrink + "<p>"; 
        result += "<p>" + value.strDrink + "<p>"; 
       }); 
       $('#result').html(result); 
       console.log(result); 
      }); 
     }); 
    } 
+0

サイトでヘッダーが設定されていないため、最後から何もできません。 Seversideプロキシが必要なものです。 – epascarello

+0

サーバはjsonp BUT jsonを返しません。独自のサーバーを使用してリクエストをプロキシする必要があります –

答えて

0

がオンになっています。したがって、ブラウザは通常、セキュリティ上の理由から同じオリジンでリクエストを許可するため、ブラウザをブロックしています。クロスドメインリクエストを行う場合は、何か別の処理を行う必要があります。その達成方法に関するチュートリアルはCORSを使用しています。

正規のWebページには、送信するXMLHttpRequestオブジェクトを使用することができますし、 は、リモートサーバからデータを受信しますが、それらは同じ 元ポリシーによって制限されています。拡張機能にはそれほど制限はありません。最初に クロスオリジンのアクセス権を要求する限り、内線番号は リモートサーバーと通信できます。

ソリューション:

のみ特定のドメインへのアクセスを許可する場合:

response.addHeader("Access-Control-Allow-Origin", "http://www.thecocktaildb.com"); 

このblog postをチェックしてください。

0

バイパスCORSエラーを修正することができますか?ターゲット環境もCORS要求をブロックできます。私がPaypalのチェックアウトを使用したとき、同じ問題が発生しました。 Paypal環境はCORSリクエストを受け付けません。

サーバー側でこの呼び出しを行うようにできます。

関連する問題