【问题标题】:Need parent name of Iframe需要 iframe 的父名称
【发布时间】:2013-02-21 02:20:24
【问题描述】:

我已经搜索了几个小时,但没有找到解决方案。希望您能提供帮助。

我想在 iframe 中获取父页面的名称和路径。这样做的原因是为了防止 iframe 内的页面显示在其预期位置之外。如果我能得到父页面的会话变量,那就更好了,因为我可以验证用户。

Iframe 将使用 ASP.NET 编写,而父页面是 PHP。

我找到了可能有效的 Javascript 代码,但我对 javascript 以及如何将返回值传递给 ASP.NET 中的代码非常不熟悉。如果您的解决方案涉及 javascript,我将需要从在表单加载中调用它到取回值的整个过程。

我已经尝试过这些功能,但它们没有显示我需要的功能。

Request.Url.AbsoluteUri.ToString
Request.ApplicationPath.ToString
Request.UrlReferrer.AbsolutePath.ToString

谢谢

【问题讨论】:

    标签: asp.net iframe parent


    【解决方案1】:

    我了解到您正在寻找解决方案和重定向背后的代码,但背后的代码无法识别页面是否是从其他页面调用的。

    您可以尝试Request.ServerVariables["HTTP_REFERER"],但这可能会出错,甚至可能被某些用户禁用或更改。

    使用 javascript 的一个简单可行的解决方案是检查 iframe 本身是否在您的母版页中。因此,这段代码会转到 iframe 内的页面,如果仅看到它,则将用户重定向回母版页。

    <script type="text/javascript" language="javascript">
        // this line is check if its inside an iframe.
        // if top==self then is not in iframe
        if(top == self)
        {
            alert("This page can not be viewed alone, please press ok to load the master page");
            top.location.replace("MasterPage.aspx");
        }
    </script>
    

    【讨论】:

    • 我听你说,我想,关于从父页面进行检查,但在这种情况下,父页面是 PHP,而不是 ASP.NET。即使这对 PHP 有效,也不会阻止有人在 iframe 之外打开 ASP.net 页面。
    • @TomCollins ServerVariables["HTTP_REFERER"] 也存在于 PHP 上(可能有其他名称),javascript 也在浏览器上运行。仅使用此 javascript 进行测试,您会看到效果以及工作方式。很简单。
    • 它只列出自己,而不是父页面。
    • 好的,测试它是否在 iframe 中,这很好(并且有效)。但是为了安全起见,我还是想看看父母的名字。我尝试了 top.name 和 window.parent.name,但它们都说“未定义”。这么近。
    • @TomCollins 试试document.location
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 2015-05-12
    • 2022-11-20
    • 1970-01-01
    相关资源
    最近更新 更多