2Request对象的一些属性等
作者:酷的带_201 | 来源:互联网 | 2023-05-19 11:47
Request.AppRelativeCurrentExecutionFilePath,获取当前执行请求相对于应用根目录的虚拟路径,以~开头,比如~default.ashxReque
- Request.AppRelativeCurrentExecutionFilePath,获取当前执行请求相对于应用根目录的虚拟路径,以~开头,比如"~/default.ashx"
- Request.PhysicalApplicationPath,获取当前应用的物理路径,比如:d:\VS2010\website\
- Request.PhysicalPath,获取当前请求的物理路径,即包括文件名,比如:d:\vs2010\website\default.aspx
- Request.RawUrl,获取原始请求的URL、Request.Url获得请求的URL,区别涉及到URL重写的问题
- Request.UrlReferrer:网页来源,可以根据这个判断访问的网页是来源于哪里,可以防搜索,防下载盗链、防图片盗链,也可以伪造,比如我们可以设置一下一个图片只能内部使用,其它的连接是不能用的。全局防盗链用Globals.asax.
- Request.UserHostAddress,获得访问者的IP地址
- Request.UserLanguages:获得访问者浏览器支持的语言,可以通过这个实现不同语言的人显示不同语言的页面。
- Request.COOKIEs,获取浏览器发过来的浏览器端的COOKIE,从它里面读取COOKIE的值,比如Context.Request.COOKIEs["sessionid"],使用Request.COOKIEs的时候一般只是读取,将COOKIE写回浏览器要用Response.SetCOOKIEs[].
- Request.MapPath(virtualPath),将虚拟路径转为磁盘上的物理路径。
分别执行以上的函数:如下代码:
protected void Button1_Click(object sender, EventArgs e)
{
string br = "
";
Response.Write("AppRelativeCurrentExecutionFilePath: "+Request.AppRelativeCurrentExecutionFilePath+br);
Response.Write("PhysicalApplicationPath: "+Request.PhysicalApplicationPath+br);
Response.Write("PhysicalPath: "+Request.PhysicalPath+br );
Response.Write("RawUrl: "+Request.RawUrl+br);
Response.Write("UrlReferrer: "+Request.UrlReferrer.Host + br);
Response.Write("UserHostAddress: "+Request.UserHostAddress + br);
Response.Write("UserHostName: "+Request.UserHostName + br);
Response.Write("UserLanguages: "+Request.UserLanguages[0] + br);
Response.Write("MapPath: "+Request.MapPath("~/Default.aspx"));
}
则它们的显示结果为:
);
using (Bitmap bmp = new Bitmap(picpath))
{
using (Graphics g = Graphics.FromImage(bmp))
{
if (context.Request.UrlReferrer == null)//如果直接浏览,则UrlReferrer为null
{
g.Clear(Color.White);
g.DrawString("禁止直接浏览图片,请在页面中查看图片", new Font("宋体", 30), Brushes.Red, 0, 0);
}
else if (context.Request.UrlReferrer.Host != "localhost")
{
g.Clear(Color.White);
g.DrawString("本图片仅限本机用", new Font("宋体", 30), Brushes.Red, 0, 0);
}
}
bmp.Save(context.Response.OutputStream, ImageFormat.Jpeg);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
客户端我们就用个超连接即可:
"http://www.w3.org/1999/xhtml">
"server">
"form1" runat="server">
当我们直接在浏览器中访问一般处理程序时,即http://localhost:6023/Handler1.ashx,则Request.UrlReferrer为null,如果把localhost改成127.0.0.1,则它拒绝访问。
——