如何防止在父窗口中复制URL

时间:2011-08-29 05:59:09

标签: javascript .net asp.net

在我的应用程序中,我在子窗口中打开我的应用程序页面。当我在IE中查看这些内容时,它没有显示任何URL,这很棒但是当我在Firefox和Chrome中检查它时,我会向我显示URL。

我的问题是我可以隐藏Firefox和Chrome的子窗口中的地址栏。

我想阻止用户在父窗口中复制粘贴网址并访问该页面。

我正在使用表单身份验证

<authentication mode="Forms">
        <forms loginUrl="~/login.aspx" protection="All" timeout="3600" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseUri" enableCrossAppRedirects="false"/>
    </authentication>

我尝试过使用Authorization =“?” 我尝试使用javascript来检查这是父窗口还是子窗口。

<script type="text/javascript">
        if (typeof window.opener != "undefined")
            alert("I was opened from within " + window.opener.location.href);
        else if (window != top)
            alert("You came here from " + document.referrer);
</script>

但第二部分不起作用。 请帮助我,让我知道我做错了什么

3 个答案:

答案 0 :(得分:1)

您可以放置​​一些脚本,而不是阻止用户复制粘贴网址,只能在发出请求时运行,否则它会执行您想要的操作。

 string referer = Request.ServerVariables["HTTP_REFERER"];
        if (string.IsNullOrEmpty(referer))
        {
            Response.Redirect("../Index.htm");
        }

仅当请求来自页面时才使用运行页面,否则它将重定向到所需页面

答案 1 :(得分:0)

否如果您打开一个新窗口,则无法隐藏该网址。 如果页面来自同一个域,您可以将结果AJAX转换为当前页面上的弹出式DIV。

那就是说 - 任何拥有一点网络知识的人都能找到这个URL。

例如在Chrome中,我甚至不需要安装任何内容,只需点击“检查元素”点击NET标签,然后查看从中加载的网址。

答案 2 :(得分:0)

如果我理解你想要什么,唯一的方法是在使用登录后,(因为你有一个登录表单),在会话状态中保存一个布尔值,表明用户已经过身份验证,然后在页面中你想要隐藏它的url,在page_load事件中,检查此布尔值是否为true,这样您就可以限制对此URL的访问而无需隐藏URL。