2017-02-14 9 views
0

からデータを要求するとき、それは私にこのエラーを与え、私はどのようにこの修正には考えているこのエラーを取得:私はAPIのからではなく、何らかの理由でデータを引っ張っいじりてきたAPI

クロス起源をリクエストがブロックされました:同じオリジンポリシーは、リモートリソースの読み取りをhttps://battlefieldtracker.com/bf1/api/Stats/DetailedStats?platform=2&personaId=376461834&displayName=TR_ISMAIL_TR&game=tunguskaに許可しません。 (理由:CORSヘッダー「Access-Control-Allow-Origin」がありません)。

だから私はhttp://docs.trnbattlefield.apiary.io/#introduction/parameters/platformからこのURLを生成し、私はそのサイト上の戦場1からの私のゲーム内の統計を見ることができますが、私はウェブへのURLをコピー&ペーストするとき、それは私の悪い要求を与えます。

これを修正する方法を知っている人はいますか?

+0

さらに詳しい情報が必要ですが、APIを呼び出すために何を使用していますか? HTTPRequest、AJAX? – DaveOz

+1

クロスドメインリクエストを行っているので、受信ドメインにはCORSヘッダーがレスポンスに含まれていないため、同じ発信元ポリシーによってブロックされています。これはJSの回避策はありません。 –

+0

@CuriousDevサードパーティのAPI –

答えて

0

あなたがJSONP

$.ajax({ 
url:"END POINT", 
dataType: 'jsonp', // Notice! JSONP <-- P (lowercase) 
success:function(json){  
    alert("Success"); 
}, 
error:function(){ 
    alert("Error"); 
}  
}); 
+0

これは、APIが(JSONと直接互換性がない)JSONP応答を送信する場合にのみ機能します。それは自動修正ではありません。 –

+0

私はそうしていると思っていますが、そうでない場合はあなたの権利はうまくいかないでしょう。 – DaveOz

+0

今のところそれを修正できませんでした私は何ができるかを見ていきます。助けてくれてありがと –

0

にデータ型を設定してみてくださいAJAXを使用している場合、サーバーがそれを許可していない場合は、クロスドメインAJAX要求をすることはできません(それは「フライト前」と時々可能です要求、詳細はhereで説明されている)。 はローカルURLを使用してリモートデータにアクセスするために、リバースプロキシを作るために

はあなたのウェブサーバ上のコントロールを持っている場合は、何ができるか、です。

< VirtualHost *:80 > 
    ServerName www.yourserver.com 
    ProxyPreserveHost On 
    ProxyRequests On 
    ProxyPass /bfapi/ https://battlefieldtracker.com/bf1/api/ 
    ProxyPassReverse /bfapi/ https://battlefieldtracker.com/bf1/api/ 
</VirtualHost> 

そして、あなたはnginxのを使用している場合、あなたの設定ファイルのserverセクションでこれを配置します:ここで

は、Apache(ニーズを有効にするmod_proxyの)でそれを行う方法である

location /bfapi/ { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header Host $host; 
    proxy_pass https://battlefieldtracker.com/bf1/api/; 
} 

このようにして、次のURLでAPIを呼び出すことができます。https://yourserver.com/bfapi/Stats/DetailedStats?platform=2&personaId=376461834&displayName=TR_ISMAIL_TR&game=tunguska

もちろん、yourserver.comを独自のドメインに置き換える必要があります。

関連する問題