首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨域请求- javascript

跨域请求- javascript
EN

Stack Overflow用户
提问于 2016-05-22 18:17:02
回答 2查看 1.3K关注 0票数 0

背景:

我正在创建一个用于下载和显示房价的web应用程序。数据源:metro.csv

我的计划:

使用javascript直接从链接中下载数据,然后将数据转换为javascript对象(可能使用jQuery)。之后,我将使用DataTables或另一个javascript库来显示数据。

我陷入困境的

经过一些研究,这样做似乎违反了“同源政策”。据我所读,在javascript中从外部来源下载数据是不可接受的。

问题:

  1. 我说的对吗?从外部数据源下载.csv是否违反了“同源策略”?
    • 如果我不正确,从上面的链接下载.csv并将其转换为javascript对象(最好使用jQuery)所需的代码片段将非常有用。

  1. 如果我是对的,为什么下载外部.csv违反了这个策略,而在网站中获取要使用的外部图像并不违反此策略?例如。

<img src="http://www.freeflashgamearcade.com/games/images/tic-tac-toe.jpg">

备注:

我希望这样做,这样我就可以完全避免使用服务器端语言。如果这不起作用,我计划使用python/烧瓶设置应用程序,该应用程序只用于下载数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-22 18:32:58

您想要实现的项目有几个问题:

  1. 由于CORS策略,您不能使用AJAX请求下载第三方文件或获取数据。有时,网站将允许共享其资源,在这种情况下,通过AJAX获取第三方数据是可能的。(CORS)
  2. 即使您能够下载CSV文件,您也必须解析它以显示数据,而且由于您使用的是JavaScript,所以您将在客户端计算机上下载它,然后需要访问它,这是不可能的。(您无法从Javascript访问系统文件[更详细的信息可以在这里找到:Local file access with javascript)
票数 1
EN

Stack Overflow用户

发布于 2016-05-22 18:43:27

您不能对另一个不是您服务器的源执行ajax请求,因为这违反了浏览器的跨源请求策略。

你可以做两件事。使用python解决方案并使CORS能够在没有浏览器策略问题的情况下执行ajax请求。因为您正在启用您的服务器接受该类型的请求。然后像这样获得ajax请求

代码语言:javascript
复制
$.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 ';'
  }
});

或者,您可以做的另一件事是制作一个标记,在用户下载完资源后,向他们显示一个模式窗口,以便重新发送到您的应用程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37377899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档