2017-07-10 12 views
1

私は、クロスドメインのJSONコールhereクロスドメインJSON - どのサーバーがソースを提供するかは重要ですか?

を作成し、それは完全に正常に動作するかの簡単なチュートリアルを見つけたので、私はちょうどからURLを変更、この例を使用することにしました:

するvar URL = "http://api.myjson.com/bins/23xvb ";

var url = "http://dl.sniper.pl/test.json" 

に残念なことに、それは(クロムで)このようなエラーを返し変化:

のXMLHttpRequestがhttp://dl.sniper.pl/test.jsonをロードできません。 プリフライト要求に応答してアクセス制御チェックを通過しません。いいえ 要求された リソースに 'Access-Control-Allow-Origin'ヘッダーが存在します。したがって、原点「ヌル」はアクセスが許可されません。

グーグルで解決策を見つけるための答えが得られなかったので、ここに質問があります: なぜこのようなエラーが発生し、解決するのですか?

答えて

0

http://dl.sniper.pl/サーバがhttp://dl.sniper.pl/test.jsonの要求への応答にAccess-Control-Allow-Originレスポンスヘッダを送信するように設定されなければならないようなものが必要。

しかし、そのサーバーがAccess-Control-Allow-Originレスポンスヘッダーを送信していないため、ブラウザはフロントエンドJavaScriptコードでそのレスポンスにアクセスすることを許可していません。

http://dl.sniper.pl/サーバーにAccess-Control-Allow-Originを送信するように設定する必要があります。そうしないと、CORSプロキシを使用してリクエストすることができます。

あなたは、このようにコードを変更することにより、あなたはを通して要求することができますオープンCORSプロキシがあります:

var url = "https://cors-anywhere.herokuapp.com/http://dl.sniper.pl/test.json" 

それにAccess-Control-Allow-Originレスポンスヘッダを付加して渡しオープンCORSプロキシhttps://cors-anywhere.herokuapp.comを通じてリクエストを送信することがあなたの要求しているフロントエンドコードを応答として返します。

レスポンスヘッダを使用したレスポンスはブラウザに表示されるものなので、ブラウザはフロントエンドJavaScriptコードが実際にレスポンスにアクセスすることを許可します。

ます。また、簡単に https://github.com/Rob--W/cors-anywhere/

あなたはXHRまたは取得APIやJavaScriptからのAJAXメソッドを使用して、クロスオリジン・リクエストのフロントエンドのJavaScriptコードを送信する際にブラウザがどのように動作するかの説明についてはhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORSを参照してくださいを使用して、独自のCORSプロキシを設定することができ

ブラウザーがフロントエンドコードで応答にアクセスできるようにするためには、どの応答ヘッダーを受け取る必要があるかについての詳細については、こちらをご覧ください。

+0

ありがとうまだ良い説明です。私は私のコードであなたのプロキシのURLを使用したが、私はサードパーティのサーバに依存したくないし、それでも.htaccess経由でそれを作ることはできません。私はサーバー上にディレクトリを作成し、ここにjsonファイルと.htaccessを入れます:https://benjaminhorn.io/code/setting-cors-cross-origin-resource-sharing-on-apache-with-correct-response-ヘッダーが許すものすべて/ through/ まだ動作しません。ほとんどの親ディレクトリで.htaccessでそれを変更する必要がありますか? – Kalreg

+0

ApacheでAccess Control - \ *ヘッダーを設定している場合は、おそらく 'a2enmod headers'を実行してトラブルシューティングを開始して、ヘッダーモジュールが有効になっていることを確認してください。しかし、これで問題が解決しない場合は、別の新しい質問を作成して「apache」というタグを付けたいと思うかもしれません。なぜなら、現在のところ助けが必要なのは、一般的な問題ここでの質問に記載されています。 (そして、あなたは別の質問としてそれを上げ、それにタグを付けることによって、ここではApacheの専門家からのより具体的な助けを得るでしょう) – sideshowbarker

+0

Apacheの問題かもしれませんが、私はサーバのエンドユーザーです。 Apacheの設定を変更する権限があります。私はおそらくそれらの設定をテストすることができますが、私はどのようにそれを行うことができますか分からない。お手伝いできますか? – Kalreg

0

あなたのhtaccessの の中のこの人はあなたのサーバーのTODOを設定する必要がありますuがこの

<RequireAll> Require all granted </RequireAll>

+0

これは何も変更しません – Kalreg

+0

クロムを使用する場合は、変更を参照する必要があります。このドメインに関するすべてのクッキーをクリアする必要があります。 https://httpd.apache.org/docs/2.4/howto/access.html – demopix

+0

すべてのCookieをクリアしても同じ結果が得られました:/ – Kalreg

関連する問題