ウェブサーバーからJSONデータを取得するローカルファイルからjQuery ajax呼び出しを行っています。
$.ajax({
type: "GET",
url: "http://mywebsite.com/data.json",
dataType: "json",
success: showData
});
そして、私はクロムで次のエラーを受け取ります:
XMLHttpRequest cannot load http://mywebsite.com/data.json. No
"Access-Control-Allow-Origin" header is present on the requested
resource. Origin "null" is therefore not allowed access.
私は、Chromeを使用してローカルファイルからajaxリクエストを行うことができないという結論に達したと思われる他の多くの回答を読んだので、解決策は次のとおりです。
- サーバーでリクエストを行うファイルをホストする
- 「--allow-file-access-from-files」フラグを指定してChromeを実行します
しかし、これらのオプションはどちらも私には適していません。
ただし、JSONデータを別のサイト(myjson.com)でホストすると、ajaxリクエストの行で次のようになります。
url: "https://api.myjson.com/bins/myfile"
ファイルが完全に読み込まれ、データが正しく表示されます。
Ajaxリクエストが「myjson.com」に許可され、「mywebsite.com」には許可されないのはなぜですか?
編集:
私はラインを持っています
Header set Access-Control-Allow-Origin "*"
私のapache2.confファイル
回答:
回答№1は0あなたがする必要があるのは、 .htaccess
ファイルをドキュメントルートに置き、次の行を追加します。
<FilesMatch ".(json)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
上記の行が行うことは、.jsonファイル上のすべてのドメインのクロスオリジンリソース共有を許可することで、エラーを取り除きます。