我已经阅读了几个关于此的问题,但仍然有点困惑。 例如:好的,由于超链接限制,我无法发布示例
这是我的确切情况。
我在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。对于只读,必须有一种方法,以便人们可以阻止他们自己的页面在其他人的网站中使用。
答案 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域名。