在我的应用程序中,我在子窗口中打开我的应用程序页面。当我在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>
但第二部分不起作用。 请帮助我,让我知道我做错了什么
答案 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。