2012-02-29 50 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