这很烦人。我试图这样做,以便当我按F5时,帧重新加载。我已经得到它,如果焦点在主页(而不是iframe),它的工作原理。但是,当我尝试实现类似的解决方案或甚至尝试与iframe进行通信时,我得到了“不安全的JavaScript尝试访问帧”。更具体地说,确切的错误是:
不安全的JavaScript尝试从包含网址http://www.spow.tk/projects/test的网址访问包含网址http://spow.tk/projects/Explorer/02/的框架。域,协议和端口必须匹配。
请帮助,因为这真的很痛苦。 感谢
答案 0 :(得分:2)
这两个网站位于不同的域中。由于Javascript中的安全限制,您无法跨域编写脚本。查看Wikipedia或Mozilla了解更多信息(引用Mozilla以防止链接腐烂):
相同的源策略可防止从一个源加载的文档或脚本从另一个源获取或设置文档的属性。此政策可以追溯到Netscape Navigator 2.0。
如果协议,端口(如果指定了一个端口)和主机对两个页面都相同,则Mozilla认为两个页面具有相同的来源。下表提供了与URL http://store.company.com/dir/page.html的原点比较示例:
URL Outcome Reason
http://store.company.com/dir2/other.html Success
http://store.company.com/dir/inner/another.html Success
https://store.company.com/secure.html Failure Different protocol
http://store.company.com:81/dir/etc.html Failure Different port
http://news.company.com/dir/other.html Failure Different host
同一原产地规则有一个例外。脚本可以将document.domain的值设置为当前域的后缀。如果它这样做,则较短的域用于后续的原始检查。例如,假设http://store.company.com/dir/other.html文档中的脚本执行以下语句:
document.domain =“company.com”; 执行该语句后,页面将使用http://company.com/dir/page.html传递原始检查。但是,由于同样的原因,company.com无法将document.domain设置为othercompany.com。
端口号由浏览器单独保存。对setter的任何调用,包括document.domain = document.domain都会导致端口号被null覆盖。因此,只能在第一个中设置document.domain =“company.com”,无法使company.com:8080与company.com交谈。必须在两者中设置它以使端口号都为空。
答案 1 :(得分:0)
spow.tk
和www.spow.tk
被视为不同的域名。
但是,您可以做的一件事是强制您的网站使用其中一个,这样就不会再出现此问题。例如,如果您使用的是Apache,则可以修改.htaccess
以将所有请求从spow.tk
重定向到www.spow.tk
(或www.spow.tk
到spow.tk
,如果是你更喜欢什么)。即使您的用户或代码引用了一个域,该请求也将重定向到您指定的域。