【发布时间】:2016-09-19 13:28:13
【问题描述】:
背景:
我正在创建一个网络应用程序来下载和显示房价。数据来源:http://www.fhfa.gov/DataTools/Downloads/Documents/HPI/HPI_AT_metro.csv
我的计划:
使用 javascript 直接从链接下载数据,然后将数据转换为 javascript 对象(可能使用 jQuery-csv)。之后,我会使用 DataTables 或其他 javascript 库来显示数据。
我卡住的地方:
经过一些研究,这样做似乎违反了“同源政策”。根据我的阅读,在javascript中从外部来源下载数据是不可接受的。
问题:
- 我说的对吗?是否从外部数据源下载 .csv
违反“同源政策”?
- 如果我不正确,从上面的链接下载 .csv 并将其转换为 javascript 对象(最好使用 jQuery)所需的代码片段将非常有帮助。
- 如果我是正确的,为什么下载外部 .csv 会违反本政策,而获取要在网站中使用的外部图像并不违反本政策?例如
<img src="http://www.freeflashgamearcade.com/games/images/tic-tac-toe.jpg">
注意事项:
我希望这样做,所以我可以完全避免使用服务器端语言。如果这不起作用,我计划使用 python/flask 设置应用程序,它仅用于下载数据。
【问题讨论】:
-
不可能通过 AJAX 请求下载文件,所以我看不出您所描述的内容如何违反 SOP。也就是说,当您将文件下载到客户端计算机时,我也看不到这可能如何工作,因此您的 JS 代码将无法访问它。
-
@RoryMcCrossan 关于下载不再是真的。例如
<a>下载属性、FileSaverAPI 等 -
可以在您自己的服务器上使用代理来检索数据,然后将ajax 发送到您的代理。或者使用第三方代理服务,比如 YQL
标签: javascript jquery html cross-domain jquery-csv