背景
我正在创建一个网络应用程序来下载和显示房价。数据来源:http://www.fhfa.gov/DataTools/Downloads/Documents/HPI/HPI_AT_metro.csv
我的计划:
使用javascript直接从链接下载数据,然后将数据转换为javascript对象(可能使用jQuery-csv)。在此之后,我将使用DataTables或其他JavaScript库来显示数据。
我被困的地方:
经过一番研究,看来这样做违反了同源政策"。根据我的阅读,在javascript中从外部源下载数据是不可接受的。
问题:
<img src="http://www.freeflashgamearcade.com/games/images/tic-tac-toe.jpg">
http://www.freeflashgamearcade.com/games/images/tic-tac-toe.jpg
备注:
我希望这样做,所以我可以完全避免使用服务器端语言。如果这不起作用,我计划使用python / flask设置应用程序,它只用于下载数据。
答案 0 :(得分:1)
您想要实现的项目存在一些问题:
由于CORS策略,您无法使用AJAX请求下载第三方文件或获取数据。有时网站会允许共享其资源,在这种情况下,可以通过AJAX获取第三方数据。 (https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)
即使您能够下载CSV文件,也必须解析它以显示数据,因为您使用的是JavaScript,您将在客户端计算机上下载它,然后您需要访问它这是不可能的。 (您无法从Javascript访问系统文件[更多细节可在此处找到:Local file access with javascript)
答案 1 :(得分:1)
您不能对不是您的服务器的其他来源执行ajax请求,因为这违反了浏览器的跨源请求策略。
你可以做两件事。使用python解决方案并启用CORS来执行ajax请求而不会出现浏览器策略问题。因为您正在启用服务器接受该类型的请求。 然后得到像这样的ajax请求
$.ajax({
type: "get",
url: "mypythonresource.com/Documents/HPI/HPI_AT_metro.csv"
success: function(response){
// response will be a string that cointains the CSV data separed by ';'
}
});
或者您可以做的另一件事就是制作一个标签,在用户下载资源后,向他们展示一个模式窗口,用于重新发送到您的应用程序