【发布时间】:2011-02-07 05:39:36
【问题描述】:
是否有可能使用 Javascript 的网页从另一个网站获取数据?就我而言,我想用它来计算和绘制图表。但出于安全考虑,我不确定这是否可行。如果它被认为是不,但有解决方法,我会很感激被告知解决方法。如果可能的话,我不想在服务器端收集这些信息。
感谢任何和所有的帮助。
【问题讨论】:
标签: php javascript web-services web-applications
是否有可能使用 Javascript 的网页从另一个网站获取数据?就我而言,我想用它来计算和绘制图表。但出于安全考虑,我不确定这是否可行。如果它被认为是不,但有解决方法,我会很感激被告知解决方法。如果可能的话,我不想在服务器端收集这些信息。
感谢任何和所有的帮助。
【问题讨论】:
标签: php javascript web-services web-applications
了解 JSONP 格式和跨站请求 (http://en.wikipedia.org/wiki/JSON#JSONP)。
您可能需要在服务器端使用“PHP-proxy”脚本,该脚本将从网站获取信息并将其提供给您的 Javascript。
【讨论】:
唯一可靠的方法是让“你的”网络服务器充当代理。在 PHP 中,您可以使用 curl() 向外部站点发出 HTTP 请求,然后回显响应。
【讨论】:
由于same origin policy.,您无法从另一台服务器提取数据您可以采取一些技巧来解决它,例如将 URL 放在 <script> 标记中,但在您的情况下,它不适用于只是解析 HTML。
使用simple_dom_html,解析您的数据服务器端。无论如何,这比用 JavaScript 做要容易得多。
您可能能够做到这一点的一种简单方法是使用inline iframe。如果您从中获取数据的网页没有标题,或者您可以隔离被拉入的数据(例如图像或 SWF),这可能会起作用。
【讨论】:
跨域 javascript 过去是不可能的,使用 (php-)proxy 是一种解决方法。
jsonp 完全改变了这一点,它允许从另一台服务器请求 javascript(如果它有一个支持 jsonp 的 API,很多更大的网络播放器,如 google、twitter、yahoo,... 做),指定回调函数在您的代码中需要触发以对响应采取行动。
javascript 中的响应将包含:
像jquery offer easy support for jsonp out of the box 这样的框架。
获得原始数据后,您可以将其绑定到 google chart tools 以动态创建图表并将其插入您的 web 应用程序中。
【讨论】:
还值得考虑的是支持XMLHttpRequest Access Control,它在一些现代浏览器中得到支持。
如果您尝试通过网页访问的服务提供商进行了此设置,那么这是对 XMLHttpRequest 的非常简单的调用,您将无需 JSONP 即可访问该站点上的资源(尤其适用于非 GET 请求,即 POST、HEAD 等)
【讨论】: