2013-02-21 35 views
2

我一直在寻找几个小时,并没有找到解决方案。希望你能帮忙。需要Iframe的父母名称

我想获取名称& Iframe中父页面的路径。原因是为了防止Iframe中的页面显示在预定位置之外。如果我可以获得父页面的会话变量,那可能会更好,因为我可以验证用户。

Iframe会写在ASP.NET中,而父页面是PHP。

我找到了可能正常工作的Javascript代码,但我对JavaScript非常不熟悉,以及如何将返回值传递给ASP.NET中的代码。如果您的解决方案涉及JavaScript,我将需要从表单加载中调用它来获取值。

我已经试过这些功能,但他们没有显示我需要什么。

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

感谢

回答

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> 
+0

我听到你在说什么,我想,从父页面检查,但在这种情况下,父母是PHP,而不是ASP.NET。即使PHP能够工作,这仍然不会阻止某人打开Iframe之外的ASP.net页面。 – 2013-02-21 03:49:15

+0

@TomCollins PHP中也存在'ServerVariables [“HTTP_REFERER”](可能带有其他名称),并且JavaScript在浏览器上运行。只用这个javascript做一个测试,你会看到效果和工作方式。很简单。 – Aristos 2013-02-21 03:57:30

+0

它只列出它自己,而不是父页面。 – 2013-02-21 04:13:03