javascript - Firefox 中的跨站点 XmlHttpRequest?

标签 javascript api firefox xmlhttprequest

我理解(我认为)XmlHttpRequest 对象遵守“相同域”策略。但是,我想创建一个简单的 (POC) 本地 html 文件,它从 Web 服务器下载 XML 并对其执行一些操作(让我们从一个简单的“alert()”开始)。

有可能吗?我需要一个特殊的 Firefox 配置选项吗?

我尝试从中下载的服务器在我的控制之下(它实际上是一个 Google API)。

我的简单尝试是来自 Mozilla's "Using XMLHttpRequest" page 的代码.它从“发送”方法返回一个我不太理解的错误。

免责声明:我主要是一名 C/C++ 开发人员 - 从未进行过任何严肃的 JS 编程,从未尝试过使用这些 API。

最佳答案

XMLHttpRequest 实际上遵循更严格的相同域策略的实现:虽然您可以设置 document.domain 属性以允许从两个子域提供的 JavaScript 相互通信,但您不能使用 XMLHttpRequestObject 来做到这一点。在您的情况下,转到一个完全不同的域,您也无法使用 JavaScript 做到这一点。

有几个选项。首先,您可以使用反向代理使外部站点看起来像是您站点的子域。查看 Apache 的 mod_proxy,特别是 ProxyPassReverse

另一种方法是将数据作为 JSON 对象返回:<script src="foo"> 可以从任何地方检索它想要的任何数据。这样做的缺点是它不是(容易)可重复的(就像来自同一页面的多个请求一样)。

我还建议您使用 Google 搜索“google mashups”。其中大部分位于“googlemashops.com”域中,这使得实现起来容易得多。一些生活在该域之外,可能会给您一些想法。

编辑:与其直接使用 XMLHttpRequest 对象,我建议通过第三方库,例如 prototype.js

关于javascript - Firefox 中的跨站点 XmlHttpRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/392796/

相关文章:

api - 在 Google Appengine 上暂时阻止远程 IP

javascript - 使用 JavascriptExecutor 发送键并点击 web 元素

java - 如何使用 Selenium Webdriver 和 Java 禁用 Firefox 中的不安全密码警告

javascript - 在表单中使用javascript时如何获取值

c - 在 Windows 7 上动态加载注册表功能?

javascript - 使用 fs.read 时没有将值返回到 console.log

android - Android 上的傅里叶变换

css - 谷歌地图 api v3 infobubble css Firefox

javascript - 将 javascript 注入(inject)门户应用程序的 iframe

javascript - Underscore.js _.map 函数 : skip a value