具有兄弟子域的跨域JavaScript代码

Gat*_*ler 5 javascript subdomain cross-domain siblings

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

david .example.com和john .example.com

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

window.open('john.example.com');
Run Code Online (Sandbox Code Playgroud)

John现在想在David上设置一个输入元素:

$("#input", window.opener.document).val("Hello David.");
Run Code Online (Sandbox Code Playgroud)

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

唯一一次这样做是因为John已经开启example.com并且两者都已经document.domain开始工作example.com.但是,这example.com是我们的主要网站,并不是一个解决方案.

那么,有什么方法可以让我在上述示例中使解决方案适用于所有现代安全意识的浏览器?

笔记

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

Dav*_*ude 8

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

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

归功于Martin Jespersen