Hintergrund:Cross-Domain-Anfragen - Javascript
Ich bin ein Web-App-Erstellung Preise zum Herunterladen und Display-Gehäuse. Datenquelle: http://www.fhfa.gov/DataTools/Downloads/Documents/HPI/HPI_AT_metro.csv
Mein Plan:
Laden Sie die Daten direkt über den Link mit Javascript und schalten Sie die Daten in ein Javascript-Objekt (möglicherweise jQuery-csv verwenden). Danach würde ich DataTables oder eine andere Javascript-Bibliothek verwenden, um die Daten anzuzeigen.
Wo ich stecken geblieben:
Nach einigen Recherchen, scheint es, dies zu tun, die "Same Origin Policy" verstößt. Nach dem, was ich gelesen habe, ist es nicht akzeptabel, Daten von externen Quellen in Javascript herunterzuladen.
Fragen:
- Bin ich richtig? Wird durch das Herunterladen einer CSV-Datei von einer externen Datenquelle die "Richtlinie für denselben Ursprung" verletzt?
- Wenn ich nicht richtig bin, wären die Code-Teile, die benötigt werden, um die .csv vom obigen Link herunterzuladen und in ein Javascript-Objekt (vorzugsweise mit jQuery) zu konvertieren, sehr hilfreich.
- Wenn ich richtig bin, warum ist das Herunterladen einer externen CSV-Datei ein Verstoß gegen diese Richtlinie, während die Verwendung eines externen Bilds zur Verwendung in einer Website keine Verletzung dieser Richtlinie darstellt? Z.B.
<img src="http://www.freeflashgamearcade.com/games/images/tic-tac-toe.jpg">
http://www.freeflashgamearcade.com/games/images/tic-tac-toe.jpg
Hinweise:
Ich hoffe, es so zu tun, so kann ich mit einer Server-Seite Sprache vollständig vermeiden. Wenn dies nicht funktioniert, plane ich die App mit Python/Flask, die nur zum Herunterladen der Daten verwendet werden würde.
herunterladen Es ist nicht möglich, eine Datei über eine AJAX-Anfrage herunterzuladen, daher sehe ich nicht, dass das, was du beschreibst, die SOP verletzen würde. Allerdings sehe ich auch nicht, wie dies funktionieren könnte, wenn Sie die Datei auf den Client-Computer herunterladen, damit sie für Ihren JS-Code nicht zugänglich ist. –
@RoryMcCrossan nicht mehr wirklich zum Download. zum Beispiel '' Download-Attribut, 'FileSaver' API usw. – charlietfl
Kann Proxy auf Ihrem eigenen Server verwenden, um die Daten abzurufen, dann Ajax zu Ihrem Proxy. Oder verwenden Sie einen Proxy-Service eines Drittanbieters wie YQL – charlietfl