我了解(我认为)XmlHttpRequest对象遵守“相同域”策略.但是,我想创建一个简单的(POC)本地html文件,该文件从Web服务器下载XML并对其进行处理(让我们从一个简单的“ alert()”开始).
有可能吗?我需要特殊的Firefox配置选项吗?
我要从中下载的服务器不受我的控制(实际上是Google API).
我的简单尝试是从Mozilla’s “Using XMLHttpRequest” page开始的代码.它返回一个我从“ send”方法中无法真正理解的错误.
免责声明:我主要是C/C++开发人员-从未做过任何认真的JS编程,也从未尝试使用这些API.
解决方法:
XMLHttpRequest实际上遵循同一域策略的严格得多的实现:虽然可以设置document.domain属性以允许从两个子域提供的JavaScript相互通信,但是您不能使用XMLHttpRequestObject来实现.就您而言,转到一个完全不同的域,您也无法使用JavaScript做到这一点.
有两种选择.首先,您可以使用反向代理来使外部站点看起来像是站点的子域.看一下Apache的mod_proxy,尤其是ProxyPassReverse
另一种选择是将数据作为JSON对象返回:< script src =“ foo”>可以从任何地方检索任何想要的数据.缺点是它不(容易)重复(就像来自同一页面的多个请求一样).
我还建议您使用Google进行“谷歌混搭”.其中大多数都位于“ googlemashops.com”域上,这使实施变得更加容易.一些人不在该领域内,可能会给您一些想法.
编辑:建议不要通过第三方库(例如prototype.js)直接使用XMLHttpRequest对象.