2016-11-16 19 views
1

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では、ページを更新せずに分散サーバーから一連のテキストを取得することはできないとは思えません。それは強い制限のように見えます。実際には、外部のサーバー(通常はクライアントの制御外にある)ではなく、クロスドメインを許可する必要があるのはクライアントだと思います。

+0

* "強い制限のようです" *セキュリティは重要です。 *「外部のサーバーではなく、クロスドメインを許可できるクライアントだと思うでしょう」*セキュリティは重要です:) https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy –

+0

外部ドメインが(JSONPまたはCORSを介して)ドメイン間要求を許可していない限り、方法はありません。考えられる回避策は、サーバー上のプロキシスクリプトで、そのファイルを取得してAJAX要求に渡すことです。 – hindmost

+0

セキュリティは重要だと私は同意しますが、CORSによって提供されるソリューションは非常に安全ではないようです(悪意のある人によって回避される可能性があり、クライアントが制御できないサーバー側の誤設定) – user1156544

答えて

1

hereのようにサーバー側の要求でcsvファイルを取得してから、 csv文字列を取得するには、サーバーサイドWebメソッドにajaxコールを行います。

+0

私は新しいサーバー側のWebメソッドを作成して解決しました...これはURLの全内容を読み込んで渡します。最も効率的なソリューションではありませんが、機能します。 – user1156544

1

サイトのバックエンド/ホスティング環境では何を使用していますか?あなたは単純にCSVにアクセスし、バックエンドから返信して、サーバ側からアクセスすることはできません。

関連する問題