2012-12-27 44 views

回答

3

做到這一點。由於一個iframe使一個GET請求沒有任何真正的辦法區分一個GET請求來自瀏覽器本身,來自嵌入在頁面中的iframe。在這兩種情況下,瀏覽器都會發出相同的GET請求。您可以在「iframe」頁面中編寫一些JavaScript代碼,檢測是否在頂部窗口中加載了該代碼,如果不是,則會重定向。

從接受的答案上How to identify if a webpage is being loaded inside an iframe or directly into the browser window?

使用窗口屬性topself

<script type="text/javascript"> 
    if (top === self) { 
     location = '/index.php'; 
    } 
</script> 
+0

通過JavaScript或什麼? –

+0

是的。您將在加載到iframe中的頁面中包含JavaScript代碼片段。 – tvanfosson

+0

怎麼樣?你能解釋一下嗎 –

-1

PHP的,你可以用頭

<?php 

    header('Location: www.sss.com/index.php') ; 

?> 
+0

他只希望在頁面未加載到iframe中時進行重定向。這會每次重定向它。 – tvanfosson

0

我建議你產生一些象徵性的如。 「982h2jruhndjf92」,將其存儲在服務器或cookie中,然後將其作爲GET參數添加到框架腳本中。

<iframe src="www.sss.com/add_news.php?token=982h2jruhndjf92" /> 

如果URL提供同樣您顯示右視圖,使用header()函數,否則重定向用戶。

+1

所有這些都需要用戶檢查頁面並輸入帶有附加標記的URL。 – tvanfosson

+0

但我打開此框架上的其他網頁通過使用目標 –

+0

我認爲沒有辦法來防止這種情況。客戶端的所有東西都可以被檢查和操作 - DOM和腳本。可能最簡單的方法是檢查top === self,但檢查並複製iframe src屬性,然後將其粘貼到瀏覽器地址欄是非常簡單的方法。我認爲最強大的安全性會在請求首頁時在會話中存儲一些標誌(例如10秒),然後當客戶端請求幀頁面並且會話中存在標誌時,您可以發送響應,否則重定向。所有的邏輯應該在服務器上以保證安全 – Pio