0

我有一个 jQuery UI 对话框,里面有一个 iframe。我正在 iframe 中加载另一个页面,该页面与父级不在同一个域中。这些页面是两个不同的系统,System1(父)和 System2(iframe 内的子)。

我想要做的是在 iframed 页面上添加一个按钮,该按钮调用 JS/jQuery 来关闭父页面上的实际对话框窗口。

像他们在这里做的事情:从 iframe 关闭 jQuery UI 对话框

问题是,由于同源策略,这仅在两个页面位于同一域时才有效

这是我当前的按钮,当两个系统在同一个域上时,它可以正常工作:

<input type="submit" onclick="$('#myDialog', window.parent.document).hide();" value="X" />

站点/系统实际上可能位于同一服务器和域上,但我使用负载平衡器在 3 个不同的服务器之间移动流量。所以有两个系统,每个系统在三台服务器上运行。下面,端口对应于不同的系统(91 = System1,92 = System2)。

IE

这些系统通过访问http://System1.myHost.comhttp://System2.myHost.com进行负载平衡,负载平衡器决定将用户发送到哪个服务器。

问题是:当用户访问http://System1.myHost.com(例如实际上在 Server1 上)并且 jQuery/iframe 试图加载匹配的 System2 站点(在这种情况下也在 Server1 上)时,Javascript 认为http://System1.myHost.com(实际上是http://Server1.myHost.com:91 http://Server1.myHost.com:92位于两个不同的域上。

不知何故,我需要欺骗 Javascript 以认为负载均衡器地址与实际服务器地址相同,但我不知道如何......

关于如何解决这个问题的任何想法?=)

4

1 回答 1

0

你不能“欺骗”JavaScript 忽略同源策略,如果可以的话,这样的策略将毫无用处。

负载平衡对最终用户应该是透明的。您应该考虑在负载平衡服务器前使用前端缓存系统,例如 Velocity 或 Memcached。

于 2013-01-15T14:59:59.870 回答