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

大卫 .example.com和约翰 .example.com

大卫为约翰打开了一个新窗口:

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

John现在想在David上重新设置输入元素:
$("#input", window.opener.document).val("Hello David.");

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

只有约翰在example.com上并且都将document.domain设置为example.com时,这才起作用。但是,example.com是我们的主要网站,不能作为解决方案。

那么,有什么办法可以使上述解决方案在所有现代的注重安全性的浏览器中运行,同时可以执行上述示例?

笔记
  • 我控制example.com及其所有子域。
  • David和John是独立的Web应用程序,不能托管在同一子域中。
  • 最佳答案

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

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

    归功于马丁·耶斯珀森(Martin Jespersen)

    07-24 09:39
    查看更多