具有同级子域的跨域 JavaScript 代码

发布于 2024-10-19 21:34:23 字数 770 浏览 6 评论 0原文

我有两个 Web 应用程序设置:

david.example.com 和 john.example.com

David 向 John 打开一个新窗口:

window.open('john.example.com');

John 现在想要设置一个输入元素关于大卫:

$("#input", window.opener.document).val("Hello David.");

我的问题是,由于跨域脚本安全性,这在大多数现代浏览器上不起作用。我还尝试在 David 和 John 上将 document.domain 设置为不同的域组合,但没有成功。

唯一有效的情况是 John 在 example.com 上,并且两人都将 document.domain 设置为 example.com。但是,example.com 是我们的主要网站,不能作为解决方案。

那么有没有一种方法可以在执行上述示例的同时使解决方案适用于所有现代安全意识浏览器?

备注

  • 我控制 example.com 及其所有子域。
  • David 和 John 是单独的 Web 应用程序,不能托管在同一子域上。 >

I have two web applications setups:

david.example.com and john.example.com

David opens a new window to John:

window.open('john.example.com');

John would now like to set an input element back on David:

$("#input", window.opener.document).val("Hello David.");

My problem is that this doesn't work on most modern browser because of cross-domain scripting security. I've also tried setting document.domain to different domain combinations both on David and John with no success.

The only time this does work is if John is on example.com and both have document.domain set to example.com. However, example.com is our main website and is not available as a solution.

So is there a way I can do the above example while making the solution works in all modern security conscious browsers?

Notes

  • I control example.com and all its sub domains.
  • David and John are separate web applications and cannot be hosted on the same sub-domain.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

终止放荡 2024-10-26 21:34:23

只要在两个 DOM 上设置 document.domain,您就应该能够做到这一点。

document.domain = location.host.replace(/^.*?([^.]+\.[^.]+)$/g,'$1');

归功于马丁·杰斯佩森

You should be able to do this, as long as you set document.domain on both DOM's.

document.domain = location.host.replace(/^.*?([^.]+\.[^.]+)$/g,'$1');

Credited to Martin Jespersen

与风相奔跑 2024-10-26 21:34:23

您始终可以使用 iframe 进行跨域通信并通过 hashbang 发送消息。有关示例,请参阅。它基本上是 Facebook connect 之类的东西的运作方式。如果一个应用程序打开另一个窗口,我猜您也可以使用普通窗口来做到这一点。

You can always use iframes for cross domain communication and send messages via the hashbangs. See this for an example. It's basically the workings of stuff like Facebook connect. If one app opens the other window I'm guessing you can do that with normal windows as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文