6

我在内部服务器上有一个页面 server1.mydomain.com/page.jsp,在另一个内部服务器上有另一个页面 10.xxx:8081/page.aspx。

在 server1.mydomain.com 上,我在 page.jsp 中设置 document.domain,如下所示:

//page.jsp on server1.mydomain.com
document.domain = document.domain;

当我在 document.domain 上发出警报时,它显示为 server1.mydomain.com。

在 10.xxx 服务器上,我在 page.aspx 中设置了 document.domain,结果是这样的:

//page.aspx on 10.x.x.x
document.domain = "server1.mydomain.com";
// test if same-origin policy violation occurs
document.getElementById("div_el").innerHTML = window.top.location.href;

在 Safari 5.1.5 中,控制台上会弹出一个错误:

SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent."

据我了解,当您设置 document.domain 时,端口号设置为 null;所以,你必须在两端设置它,我做了。然后,发生了这个错误,我在摸索为什么。这与我使用 10.xxx 而不是实际域名有关吗?

谢谢你。

4

2 回答 2

15

您只能用于document.domain从更具体的子域更改为不太具体的域。像...

console.log(document.domain); // server1.mydomain.com

document.domain = 'mydomain.com'

console.log(document.domain); // mydomain.com

它不能用于设置更具体的子域或完全不同的域。

于 2012-04-05T19:09:57.773 回答
3

您只能设置document.domain为其当前值或当前设置的超域。因此,“foo.something.com”的页面可以将其设置为“something.com”,但不能设置为“something.else.com”。

于 2012-04-05T19:09:23.107 回答