2016-08-19 26 views
0

this Treadに示すように、JavaScriptとPHPプロキシを使用してサードパーティのApiを消費しようとしていますが、私はプロキシを使用することができますが、私が得る応答は常にです:AjaxクロスドメインPHPプロキシ403エラー

は、リソースの読み込みに失敗しました:サーバは403(禁止) http://MYDOMAIN.co/php/ba-simple-proxy.php?url=http://jsonplaceholder.typicode.com/posts&_=1471620448707

私のjavascriptのコードの状態で応答します:

function getLocationSimple(){ 
var proxy = 'php/ba-simple-proxy.php', 
    url = proxy + '?url=' + 'http://jsonplaceholder.typicode.com/posts'; 
    console.log(url); 
// Make JSON request. 
    $.getJSON(url, function(data){ 

    console.log(data); 
    }); 
} 

が、私はそれがサードパーティのサーバー上の権限についてだと思ったので、私は変更することを決めたそれは開いた1つに - http://jsonplaceholder.typicode.com/posts - 、私はまだ同じエラーが発生し、それは私自身のサーバーでのアクセス許可ですか? -my hostはhostgator-

+0

http 403エラーは、多くの理由が原因である可能性があります[ここ](https://en.wikipedia.org/wiki/HTTP_403)をもっと見ることができます。問題はあなたの 'getLocationSimple'スクリプトではなく' php/ba-simple-proxy.php'の中にあるものでしょう。 –

答えて

0

です。これはクロスドメインポリシーと関係があります。悪意のある攻撃は、ajaxを介してリクエストを行い、ハックするための追加スクリプトを読み込むため、セキュリティ上の理由から別のドメインにajaxリクエストを行うことはできません。

ウィキペディアが提供するのに最適なリンクではないかもしれませんが、それはあなたにアイデアを与えるでしょう。

https://en.wikipedia.org/wiki/Same-origin_policy

+0

ありがとう!私はこれを知っているので、私はサーバー側の接続を使用しようとしているので、PHPプロキシ、歓声! – randomguy04

1

のは、一度コード

function getLocationSimple(){ 
      $.ajax({ 
       type: 'POST', 
       dataType: 'jsonp', 
       url: "http://jsonplaceholder.typicode.com/posts" 
      }) .done(function(data) { 
       console.log(data); 
       }); 
     } 

のこの作品を試してみましょう、これはクロスドメインポリシーのために起こります。クロスサイトアクセスはAPI側では利用できません。だから我々はdataType: 'jsonp'この問題を克服するために使用することができます

+0

は私が選んだ例ではうまくいきます!しかし、私の実生活プロバイダでこれを使用すると、新しいエラーが発生しました - > MIMEタイプ( 'application/json')がhtttp:// XXXXXからスクリプトを実行することを拒否実行可能ではなく、厳密なMIMEタイプチェックが有効になっています。その周りに道があるのですか? – randomguy04

+0

http://stackoverflow.com/questions/24528211/refused-to-execute-script-from-because-its-mime-type-application-json-is –

関連する問題