2008-11-27 57 views
14

有没有办法与其他域一起使用XMLHttpRequest?我可以向另一个域创建XMLHttpRequest吗?

我想解析来自谷歌一些XML,而无需使用一个服务器,因此它是minimalistically复杂的运行。

var req = getXmlHttpRequestObject(); 
... 
req.open('GET', 'http://www.google.de/ig/api?weather=Braunschweig', true); 
     req.setRequestHeader("Content-Type","text/xml"); 
     req.onreadystatechange = setMessage; 
     req.send(null); 

做这在服务器端没有选择至少我不会要问

回答

10

不,不是现在。我相信我已经看到计划/设计正在由未来的标准组织制定,所以我们可以安全地做到这一点。

跨站点脚本漏洞会猖獗其他明智的。

JSONP是一个可能的解决方案,如果其他网站API支持。

+0

JSONP是一个神奇的词,+1 – 2008-11-27 22:04:17

2

这是一个安全问题,大多数(所有?)浏览器不会让你这样做。您可以使用隐藏的IFrame来执行抓取,但它足够复杂,我只需使用服务器(或切换到其他语言,如果我不必在浏览器中运行)

+0

即使有一个隐藏的iframe,你仍然不愿透露来自其他域的内容 – 2008-11-27 21:55:55

0

这是不可能的由于浏览器目前有限制SOP(同源策略)限制XSS攻击。
您将不得不使用服务器端脚本(PHP或其他)。

0

你可以尝试做在服务器端的东西。因此,在您的应用程序中,您向远程站点发出请求,并将结果返回给客户端。 AJAX调用然后只调用你自己的服务器并且工作。

+1

你没看过我的描述吗? – Thomaschaaf 2008-11-27 22:06:53

0

它能够使一个XHR与HTML5.You另一个域也可以与不同XHR协议请求当与HTTP通信到另一个网站时。

1

你不能这样做跨域请求,e.g。由于客户端(浏览器)中的安全问题,从example1.com到example2.com通过XMLHttpRequest或jQuery(这是XMLHttpRequest的包装)。这可以在现代浏览器通过CORS支持HTML5(跨源资源共享,在每个客户端浏览器中都不可用)中有效实现,因此,解决方案是在example2.com的example1.com中插入脚本标记,并且此解决方案是已知的作为JSON-P(JSON与填充),这个名字可能是误导,因为该数据可以由服务器(example2.com)送达的任何格式,它的实现代码在这个环节中给出http://newtechinfo.net/jsonp-for-cross-domain-ajax/

相关问题