0

最近我遇到了以下语句:“对 XML 数据文件的所有 Ajax 调用必须来自同一个域,否则请求将失败。”任何人都可以帮助我理解这一点,因为我无法从中得到太多。

4

2 回答 2

0

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

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

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

从服务器,你必须得到像jsonpFunction({'name':'abc'})这样的响应,所以在得到这个响应后,你声明的jsonpFunction会被调用,你就可以实现这个{'name':'abc '} 目的。

于 2013-06-18T19:44:40.783 回答
0

假设您的网站(包括将启动 AJAX 的 Javascript)托管在site1.com.

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

此请求site1.com--->site2.com违反了相同的源策略,因为这 2 个位于不同的域中。

解决办法?

  • 最简单的解决方案是在 site1.com 上托管 file.xml,如果可以的话?
  • 您可以在您的域上请求一个 URL,该 URLsite.com/getMeThatAwesomeFile执行一些服务器端代码以获取文件的内容并将其返回给您
  • 您可以使用反向代理,以便site2.com/file.xml实际解析您域上的某些内容。
于 2013-06-18T19:19:47.770 回答