权限问题检查父网站是否是iframe中的父网域

时间:2010-10-21 21:51:14

标签: javascript iframe dns

我已经阅读了几个关于此的问题,但仍然有点困惑。 例如:好的,由于超链接限制,我无法发布示例

这是我的确切情况。

我在mydomain.com有一个网站 其中一个页面在sub.mydomain.com上有一个iframe到另一个页面

我正在尝试准备一个onload脚本,如果该页面不在iframe中,或者包含iframe的页面的父域不是mydomain.com,则重定向到mydomain.com。

在初始权限问题之后,我意识到子域计为单独域的问题。

上面的一个帖子说“每个人都可以使用foo.mydomain.com或只是mydomain.com”

所以我试过(测试):     的onload = “document.domain的= 'mydomain.com';警报(parent.location.href);”

这产生了错误(http替换为lar

Error: Permission denied for <http://sub.mydomain.net> (document.domain=<http://mydomain.net>) to get property Location.href from <http://mydomain.net> (document.domain has not been set).
Source File: http://sub.mydomain.net/?pageID=1&framed=1
Line: 1

删除警报不会产生任何错误。

也许我正在以错误的方式解决这个问题,因为我不需要与父母互动就读它的域名(如果有的话)。

一个很好的简单top.domain。对于只读,必须有一种方法,以便人们可以阻止他们自己的页面在其他人的网站中使用。

3 个答案:

答案 0 :(得分:0)

由于安全限制,您无法(轻松)执行此操作。

This answer from #2771397可能会指出你正确的方向。

答案 1 :(得分:0)

好的,看着错误控制台,当我回到家时,我仍然打开了一个小灯泡点亮了。我对javascript很新(你能说出来吗)但我想“如果它有尝试/捕获”......

这里至少有一个hack来获取顶级域名的名称,以及我将如何在我的网站中使用它来显示内容,只有当页面是正确域中的框架时才会显示内容。

首先,标题将具有以下部分PHP生成的函数:

function getParentDomain()
{
  try
  {
    var wibble=top.location.href;
  }
  catch(err)
  {
    if (err.message.indexOf('http://mydomain.com')!=-1)
    {
      createCookie('IAmAWomble','value')
    }
  }
}

基本上,这个值将基于我认为的PHP会话。这将在页面加载时执行。

如果页面不在适当的网站内,或者未启用javascript,则不会创建cookie。 然后,PHP将尝试从cookie中读取正确的值,并根据需要显示内容或错误消息。

我确实在第一次访问中看到了一个轻微的缺陷,因为页面加载将在PHP生成内容后运行,但我确信我可以以某种方式解决这个问题。我以为我会发帖,因为这至少是我最初要求的内容,如果父网站的网址与网站中的网站位于不同的域中,那么这是一种读取父网站网址的方法。

答案 2 :(得分:0)

您希望使用window.parent属性的IIUC:“对当前窗口或子帧的父级的引用。”
据推测,window.parent.document.location.host包含容器页面URL域名。