AJAX XML调用跨域

时间:2013-06-18 16:51:51

标签: javascript ajax

最近我发现了以下声明:“全部 对XML数据文件的Ajax调用必须来自同一个域,否则请求将失败。“,任何人都可以帮助我理解这一点,因为我无法从中获取很多东西。

2 个答案:

答案 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,该URL执行一些服务器端代码以获取文件的内容并将其返回给您
  • 您可以使用反向代理,以便site2.com/file.xml实际解析为您域中的内容。

答案 1 :(得分:0)

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

e.g。如果你使用JSONP,那就像

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

从服务器,你必须得到像jsonpFunction({'name':'abc'})的响应,所以在得到这个响应后,你的声明的jsonpFunction将被调用,你将能够实现这个{'name' :'abc'}对象。