我可以将XMLHttpRequest发送到另一个域吗?

时间:2008-11-27 21:47:42

标签: javascript xml ajax xmlhttprequest

有没有办法将XMLHttpRequest与其他域结合使用?

我想从Google解析一些xml,而不必使用服务器,因此运行起来很简单。

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);

在服务器端这样做是不可能的,至少我不需要问

7 个答案:

答案 0 :(得分:11)

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

跨站点脚本漏洞其他方面也会猖獗。

如果其他网站API支持,

JSONP是一种可能的解决方案。

答案 1 :(得分:7)

HTML5现在支持使用XmlHttpRequest级别2的Cross Origin请求来查看:

http://www.html5rocks.com/en/tutorials/cors/

答案 2 :(得分:2)

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

答案 3 :(得分:1)

您无法进行跨域请求,例如。由于客户端(浏览器)的安全问题,从example1.com到example2.com通过XMLHttpRequest或jQuery(它是XMLHttpRequest的包装器)。这可以在支持HTML5到CORS的现代浏览器中有效实现(跨源资源共享,这在每个客户端浏览器中都不可用。因此,解决方案是在example2.com的example1.com中插入脚本标记,这个解决方案是已知的作为JSON-P(带填充的JSON),名称可能会产生误导,因为数据可以是服务器(example2.com)提供的任何格式。其实现代码在此链接http://newtechinfo.net/jsonp-for-cross-domain-ajax/

中给出

答案 4 :(得分:0)

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

答案 5 :(得分:0)

可以使用HTML5将XHR创建到另一个域。当与HTTP通信到另一个网站时,您也可以使用XHR进行不同的协议请求。

答案 6 :(得分:-1)

您可以尝试在服务器端执行某些操作。因此,在您的应用程序中,您向远程站点发出请求以获取结果并将其返回给您的客户端。然后,AJAX调用只调用您自己的服务器并运行。