2013-02-21 68 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