由于跨域功能,无法从我的网站的 yahoo Finance api 获取结果

Posted

技术标签:

【中文标题】由于跨域功能,无法从我的网站的 yahoo Finance api 获取结果【英文标题】:unable to get the results from the yahoo finance api for my site due cross domain funcationality 【发布时间】:2012-11-12 03:32:33 【问题描述】: 如果(窗口.XMLHttpRequest) xmlhttp=新的 XMLHttpRequest(); 别的 // IE6、IE5的代码 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("GET","http://finance.yahoo.com/d/quote.csve=.csv&s=^BSESN&f=nl1c2vgh&random=10",true); xmlhttp.send(null); xmlhttp.onreadystatechange=函数() 如果(xmlhttp.readyState==4) window.alert(xmlhttp.status);

以上代码在 IE 中显示状态 200 但在 Firefox 和 Chrome 中由于跨域功能而得到状态 0。 任何人都可以帮助如何使用 java 脚本克服这种跨域功能。

【问题讨论】:

不行,但是你可以在服务器端做吗? 可以使用 Yahoo YQL 访问它。它是一个跨域代理 【参考方案1】:

由于跨域问题,无法从 javascript ajax 直接调用其他域 进行此类调用的最佳方法是使用 Ajax 调用您自己的网页,并从您的服务器端脚本调用这些 api 并获得答案并返回到您的ajax 调用。

如果您使用的是 php,则可以使用 cURLfile_get_contents 从 url 获取内容

【讨论】:

感谢 Pankaj 提供的信息。如果我调用任何 php 脚本,那么请求会转到我的服务器 ip。我认为从单个 IP 访问来自雅虎的数据是有限制的。所以,我需要从客户端调用 yahoo api。有没有办法使用任何 Dojo 或任何其他脚本库来克服跨域问题? 这不是javascript的问题,现代浏览器出于安全问题不允许这样做。从服务器访问始终是一种好方法,因为您不需要在客户端传递您的秘密信息。

以上是关于由于跨域功能,无法从我的网站的 yahoo Finance api 获取结果的主要内容,如果未能解决你的问题,请参考以下文章

Python 的 yfinance 和 yahoo_fin 最近是不是停止工作?

jQuery 跨域 iframe 脚本

无法从我的网站在 Whatsapp 上分享

Chrome 54 没有从我的网站获得 HTTPS 响应; Chrome 53、Chromium、Firefox 和 Safari 都可以

使用 Jquery/CSS 进行跨域 iframe 控制/加载

使用 RESTful 服务保护跨域的 API 调用