我的环境实际上不允许服务器端脚本编写(在服务器上“安装”脚本非常困难)。我尝试使用 iframe 来违反 javascript 的同源策略;然而,这没有用。还有其他我不知道的解决方法吗?
谢谢!
我的环境实际上不允许服务器端脚本编写(在服务器上“安装”脚本非常困难)。我尝试使用 iframe 来违反 javascript 的同源策略;然而,这没有用。还有其他我不知道的解决方法吗?
谢谢!
正如David Dorward所说,JSON-P 是最简单、最快的;然而,还有另一个技巧,特别是使用两个 iframe。
两个不使用JSONP解决这个问题,你可以执行以下操作。此技术假定您对父页面具有某种开发访问权限。
在两个域/站点上有三个页面。
父页面和 xdcomm 页面托管在同一域中,内容页面托管在任何其他域上。内容页面作为 iframe 嵌入到父页面中,而 xdcomm 页面作为隐藏的 iframe 嵌入内容页面中。

xdcomm 页面包含一个非常简单的脚本,用于检测查询字符串中的 GET 参数,解析该字符串的method和args变量(其中args是 JSON 编码的字符串),然后在父页面中使用指定的参数执行指定的方法。一个例子可以在这里看到(查看源代码)。
尽管 JavaScript 的同源策略限制一个域上的代码访问另一个域上的代码,但域是否相互嵌套(域 A、嵌套在域 B 中、嵌套在域 A 中)并不重要。
因此,简而言之,内容页面通过将 iframe 的源更改为类似http://domaina.com/xdcomm.html?src=foo&args=[1,2,3,4]. 这相当于foo(1,2,3,4)在父页面中执行。
另外,要知道已经有一些库可以帮助您解决这个问题,例如easyxdm。我在这里解释的是他们使用的其中一项技术的基础,虽然它可能没有那么花哨,但它肯定是一个功能齐全的轻量级实现。
希望不会,因为这将是一个安全漏洞!:)
但是,如果您的两个站点都是同一个域上的子域,则document.domain可能会有所帮助。