2012-12-04 47 views
2

这很烦人。我试图做到这一点,当我按F5时,框架重新加载。我已经知道了,所以如果重点是在主页(不是iframe),它的工作原理。然而,当我尝试实现类似的解决方案,甚至尝试与iframe进行通信时,我会得到一个'不安全的JavaScript尝试访问框架'。更具体,确切的错误是:不安全的JavaScript试图重新加载框架时尝试

不安全JavaScript尝试与URL http://www.spow.tk/projects/test从帧帧访问使用URL http://spow.tk/projects/Explorer/02/。域,协议和端口必须匹配。

请帮忙,因为这真的很痛苦。 谢谢

+6

'spow.tk'和'www.spow.tk'是**不同**域 – zerkms

+0

哦。哇我觉得很蠢 – user1877408

+0

@zerkms你应该扩大你的评论,并提供一个答案,以帮助他人了解相同的政策。 – aefxx

回答

2

这两个网站是在不同的域名。由于Javascript中的安全限制,您无法跨域进行脚本编写。退房WikipediaMozilla更多信息(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通话。它必须在两者中设置,以便端口号都为空。

0

spow.tkwww.spow.tk被认为是不同的域。

但是,您可以做的一件事是强制您的网站使用其中一种,这样就不会再出现此问题。例如,如果您使用的是Apache,则可以修改您的.htaccess以将所有请求从spow.tk重定向到www.spow.tk(或者如果这是您更喜欢的www.spow.tkspow.tk)。即使您的用户或代码引用了一个域,该请求也会重定向到您指定的域。

相关问题