我想在加载页面之前访问浏览器的URL并替换它。
我只是不希望用户能够观看他/她正在登陆的页面。
我虽然访问了Page_Init中的url,但我找不到如何。
任何想法或更好的解决方案?
EDITED:
我不需要更改(或删除)URL中的服务器名称,只需要更改(或删除)文件夹/文件名。
因此,如果原始网页位置的格式为:http://www.server.com/folder/file.aspx
我想将其更改为http://www.server.com/misc/GeneralPage.aspx
或http://www.server.com/
Response.Redirect不会这样做。我想留在同一页面,但要更改网址。
Server.Transfer是带有帮助程序预登陆文件的默认解决方案,但对我来说还不够好。我想留在同一页面,但要更改显示的网址。
解决方案:
这里有一个涉及HTML5和另一个解决方案方向的答案,我想尽快调查,但它不再在这里(消失了)。如果这是你的答案,请再写一次。这是一个重要的。
我在这里给出了作为我行动决定的最佳选择(现在,直到我找到更好的解决方案),但我不赞成它(我不认为它是一个答案)。 这是一个详细的测试解决方案。
答案 0 :(得分:2)
由于浏览器安全功能,这是不可能的。如果浏览器允许程序员显示不同于用户实际所在的URL,那么会有更多人在不知不觉中将敏感的银行信息移交给第三方。
URL应该标识浏览器请求并由服务器返回的特定资源。
话虽如此,您可以在域管理级别使用域掩蔽技巧。 GoDaddy使用的一种技术是通过屏蔽来提升您的域名,这实质上是在iframe中加载您的网站,以便原始网址保留在原始域中,新内容在iframe中提供。
你也可以自己使用这种技术。将内容返回到浏览器时,返回一个iframe,其中src属性指向新内容。
至于修改显示的实际网址,这是不可能的,我不确定为什么你真的想要这样做。
答案 1 :(得分:1)
出于安全原因,您无法更改整个网址,以阻止网页欺骗,从而阻止网上诱骗攻击。
但是,您可以在哈希(#)符号后更改URL的任何部分。 URL的这一部分仅在客户端javascript中可用,并且可用于存储当前页面的状态信息而无需重新加载它。它是windows.location.hash
属性。
答案 2 :(得分:0)
我在这里给出了我的行动决定(时间)。 一旦我决定一个更好的解决方案,我会在此发布信用卡。
虽然这是我希望避免的解决方案,但看起来它现在是最好的。
在阅读完所有答案和评论后,我决定使用的解决方案是使用一个空的登录页面并使用Server.Transfer到隐藏文件。我把Server.Transfer放在Page_Init。
中提货页面Lading.aspx
仅包含一行:
<%@ CodeFile="Landing.aspx.cs" Inherits="Landing" %>
Landing.aspx.cs
背后的代码包含:
using System;
public partial class Landing : System.Web.UI.Page
{protected void Page_Init(){Server.Transfer("~/Landing_Hidden.aspx");}}
隐藏页面Landing_Hidden.aspx
是常规的aspx页面。
非常感谢大家的回答和评论。
我发现在这里提到的网络钓鱼视图中,除了更改URL之外,使用上述解决方案没有区别。
答案 3 :(得分:0)
var stateObj = {foo:&#34; bar&#34; }; history.pushState(stateObj,&#34;第2页&#34;,&#34; bar.html&#34;);
您可以通过创建java脚本函数来使用此代码,并在按钮的clientclick事件上调用它
代替bar.html 只需更改您的任何网址,例如的index.html 当您点击按钮时,您的输出将如下所示 即www.dotnetprofessional.in/bar.html或www.dotnetprofessional.in/index.html 没有页面回复或刷新