ZingChartを使用するページがあり、他のドメインの複数のURLからAjax経由でデータを読み込みます。CORSを避けてAjax経由でCSVを取得
1, 2, 3, 4, 5
または::私は必要なもの
2.34,1.01,4.56
は、これらのファイルにアクセスし、このようにZingChartためのJSONを構築することである。
{"data":[THE_CSV_GOES_HERE], "name":"WHATEVER"}
データは、次のようなCSVファイルであります私の最初の問題は、通常のCORSの問題(その有用性はまだよく分かりません)に遭遇し、以来、私はCSVをホストしているサーバーを制御していません。、私はexplained hereとしてこの回避策を使用:CSVは、JSON形式ではないので
$.ajax({
url:"http://otherdomain/test.csv", // This is dynamically placed
dataType: 'jsonp',
success:function(res){
return res;
},
error:function(r, error){
alert("Error " + error);
}
});
これはparsererror
を発生させ、私は考えます。
私が代わりに「JSONP」の「テキスト」を使用している場合、私はdocumentationのように「JSONPテキスト」を使用している場合、私はまだparsererror
を取得CROSエラー(No 'Access-Control-Allow-Origin' header is present on the requested resource.
)を取得します。 crossDomain: true, dataType: 'text'
を使用してcrossDomainを強制するが、それをテキストとして指定すると、CORSエラーが表示されます。
this personと同様の問題が発生しているようです。
どうすればこの問題を解決できますか?現代のWebでは、ページを更新せずに分散サーバーから一連のテキストを取得することはできないとは思えません。それは強い制限のように見えます。実際には、外部のサーバー(通常はクライアントの制御外にある)ではなく、クロスドメインを許可する必要があるのはクライアントだと思います。
* "強い制限のようです" *セキュリティは重要です。 *「外部のサーバーではなく、クロスドメインを許可できるクライアントだと思うでしょう」*セキュリティは重要です:) https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy –
外部ドメインが(JSONPまたはCORSを介して)ドメイン間要求を許可していない限り、方法はありません。考えられる回避策は、サーバー上のプロキシスクリプトで、そのファイルを取得してAJAX要求に渡すことです。 – hindmost
セキュリティは重要だと私は同意しますが、CORSによって提供されるソリューションは非常に安全ではないようです(悪意のある人によって回避される可能性があり、クライアントが制御できないサーバー側の誤設定) – user1156544