在子域 iframe 中更改 window 位置 href

Change window location href in subdomain iframe

我有 a.example.comb.example.com;

当我将 b.example.com/foo 作为 iframe 放入 a.example.com 时:

<iframe src='b.example.com/foo'></iframe>`

可从 b.example.com 访问的 window.location.href 值是... a.example.com/foo (??)...

问题是 - 我在 b.example.com/foo 中使用外部库来检查 window.location.href,但它得到的信息不正确。

对于这种情况,在我看来我应该将 iframe /foo 内容放在一个完全不同的域中,例如: anotherexample.com/foo,其中 window.location.href 实际上指向 anotherexample.com/foo

如何强制 iframe 中的 window 对象实际使用其子域而不是带有添加参数的父域?

您确定您在正确的子域中使用您的脚本吗?看起来您的外部库正在使用 window.parent.location 访问父级 window,这里有一段代码可以检查页面是直接加载还是在另一个页面中加载:

var is_loaded_directly = (window.location == window.parent.location);

由于此代码有效,您的设置或库出现问题。

注意: 也许您可以通过检查 document.location 而不是 window.location.

来解决您的问题