关于UrlReferrer
1。防止盗链和直接打开某页。
protected void Page_Load(object sender, EventArgs e)2
{if(Request.UrlReferrer==null)
{
//Response.End();
}
if(Request.UrlReferrer.Authority!=Request.Url.Authority)
{
// Response.End();
}
3
7
}2。返回上页的用法引用一篇他人的文章。
有时进入管理页面时,session和cookie消失时,要返回登录页面,登录后我们仍想返回刚才管理操作的这个页面.这样很方便.可以用Request的一个属性实现Request.UrlReferrer
获取有关客户端上次请求的 URL 的信息,该请求链接到当前的 URL。
当一个页面跳到此页面时,它就会记录跳到这个页面的URL,然后利用这个URL返回.小技巧,记录下来
protected void Page_Load(object sender, EventArgs e)2
{3
ViewState["UrlReferrer"] = Request.UrlReferrer.ToString();4

5
HyperLink1.NavigateUrl = (string)ViewState["UrlReferrer"];6
Response.Write((string)ViewState["UrlReferrer"]);7
}3.关于UrlReferrer 的小Bug
HttpRequest的UrlReferrer和Referer Header是同宗的
在 IE 中,访问 http://localhost\1.htm (注意这里故意是 \ 而不是 / , / 是没有问题的。http://localhost\1.htm 在 Mozilla Firefox 中认为是错误的,但是IE认为是正确的。)这样地页面没问题,但是,如果这个页面1.htm中的一个页面链接是连接到一个ASPX页面。
假设 1.aspx
1.aspx 使用到这样一行代码 Request.UrlReferrer
就会报错误 ,错误如下:
无效的 URI: 无法分析主机名。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.UriFormatException: 无效的 URI: 无法分析主机名。
[UriFormatException: 无效的 URI: 无法分析主机名。]
System.Uri.Parse() +2504
System.Uri..ctor(String uriString, Boolean dontEscape) +153
System.Uri..ctor(String uriString) +7
System.Web.HttpRequest.get_UrlReferrer() +156
ASP._1_aspx.Page_Load(Object src, EventArgs e) in D:\WEBSITE\Community\1.aspx:6
System.Web.UI.Control.OnLoad(EventArgs e) +55
System.Web.UI.Control.LoadRecursive() +27
System.Web.UI.Page.ProcessRequestMain() +750
版本信息: Microsoft .NET Framework 版本:1.1.4322.2032; ASP.NET 版本:1.1.4322.2032
请求 1.aspx 页面的时候,发送的Http头信息的部分如下:
GET /1.aspx HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Referer: http://localhost\1.htm
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.40607)
显然微软的System.Uri.Parse() 中,认为URL中 / 才是正确的,而 \ 是错误的。
以上Bug,就是通过 ieHTTPHeaders 查出来了.推荐使用 ieHTTPHeaders http://blog.joycode.com/ghj/archive/2004/10/15/35580.aspx

浙公网安备 33010602011771号