这是我的代码
tl2010handle = window.open("/path/main.html", 'tl2010', 'statusbar=no,toolbar=no,scrollbars=no,locationbar=no,setResizable=no,width=840,height=600');
setTimeout(function() {console.log(tl2010handle.window.location.href)}, 2000);
如果我加载我的https://ec2b.foo.com/console/login2020.jsp
页面DOMException: Blocked a frame with origin "https://ec2b.foo.com" from accessing a cross-origin frame.
如果我在 /etc/hosts 中添加一个条目143.67.75.100 ec2b
,然后在页面https://ec2b/console/login2020.jsp
正常工作时加载我的页面,并且我的控制台会记录 href。
奥秘在于我打开的窗口的 URL 没有指定来源,所以我不明白 Chrome 怎么会抱怨我的请求是跨域的。
该代码仅存在于一台服务器上,因此 ec2b 和 ec2b.foo.com 不可能不同。也通过 dig 确认。我在 Chrome 和 Firefox 中都尝试过,结果相同,尽管在 Firefox 的情况下,tl2010handle 变量在第一种情况下未设置,而在第二种情况下设置。