2013-06-18 68 views
0

最近我遇到以下声明:“所有 Ajax调用XML数据文件必须来自同一个域或请求将失败。”,任何人都可以帮助我理解这一点,因为我可以'没有多大用处。AJAX XML调用跨域

+1

这意味着它说。除非与您位于同一个域中,否则您无法通过AJAX获取XML。看到这个:http://en.wikipedia.org/wiki/Same_origin_policy –

+0

你不能进行跨域调用,但你可以进行同域调用谷歌它。 – moonwave99

+0

我从维基百科链接中得到它,谢谢! –

回答

0

比方说,您的网站,包括启动AJAX的Javascript托管在site1.com

AJAX将请求一个名为file.xml的文件,其地址为site2.com/file.xml

此请求site1.com --->site2.com说明相同的原产地策略,因为2在不同的域上。

解决方法?

  • 最简单的解决方案是在site1.com上托管file.xml,如果可以的话?
  • 您可以在您的域名site.com/getMeThatAwesomeFile它执行一些服务器端代码来获取文件的内容,并返回到您请求的URL
  • 您可以使用反向代理,以便site2.com/file.xml实际上解析为您的域名的东西。
0

您可以使用JSONP,但有一些限制(只允许'GET'动词,数据应放置在服务器的函数内部)。 JSONP首先不是ajax调用,它下载脚本并调用jsonp函数,并在该函数中传递数据。

例如如果你使用JSONP,那么它会像

<script type='text/javascript' src='cross-domain-url'>jsonpFunction(data)</script> 

从服务器中,你必须得到像jsonpFunction({“名”:“ABC”})的反应,所以得到这个响应后,您宣布jsonpFunction会被调用,你将能够实现这个{'name':'abc'}对象。