2012-02-29 49 views
0

我有一個頁面發送到iframe中。 iframe本身是基於後端邏輯條件顯示的。是否有可能只有iframe能夠顯示該頁面?選擇性顯示頁面

基本上我希望能夠從iframe中調用頁面,但直接訪問URL的人將被重定向或阻止。

回答

1

您可以檢查Referer標題並僅在與包含iframe的文檔的URL匹配時才爲頁面提供服務。但是這隻會讓用戶隨意瀏覽直接的URL。一般來說,答案是否定的,您無法控制用戶代理將如何顯示內容。

如果您確實需要這樣做,請動態生成父文檔,以便它包含具有嵌入式隨機一次性標記的iframe的URL。通過腳本生成iframe內容,該腳本在交付頁面之前檢查一次性標記的有效性,並同時從數據庫中刪除標記。您必須使iframe內容無法緩存,並且您可能會遇到與緩存相關的副作用,這些副作用會導致合法用戶的頁面不時崩潰。

+0

當你說「這將只覆蓋一個用戶隨便瀏覽直接URL」用戶可以訪問該頁面的其他方式是什麼? – 2012-02-29 20:58:49

+0

你可以簡單地僞造'Referer'頭來直接訪問頁面。 – Celada 2012-03-01 14:48:51

0

讓我們假設您的iframe的網址爲http://example.com/myiframepage。呈現的iframe的頁面是http://example.com/parentpage

我假設你的父頁面已經有類似代碼:


    //in parentpage : 
    if(can_show_iframe) { 
     
    } 

你只需要向前邁進一步,並修改代碼myiframepage如下 -


    //in myiframepage 
    if(can_show_iframe) { 
    //normal processing 
    } 
    else { 
    //return 403 error code which indicates access denied 
    } 
+0

感謝您的回答!在我的問題中,我的意思是如果有人去了,並將URL輸入到他們的瀏覽器中,或者嘗試使用iframe之外的某種方法訪問該頁面。 – 2012-02-29 20:54:52