在Global全局文件中的Application_BeginRequest示例
只要有人访问本网站,都要执行全局文件的Application_BeginRequest事件。因此我们可以防盗链。
示例要求:凡不是网站本机登录的都给客户端提示,用图片显示。
分析:由于网页在加载时不是一次性全部加载,如先加载网页,再加载相关的js文件,再加载图片等,因此在客户端上有个图片元素,在此事件中判断请求的类型是否为图片并且是否是以localhost登录的,如果不是就发送客户端的另个图片。
开发步骤:
1.在目录中放两个图片,一个图片为正常显示,另一个为禁用提示的图片
2.新建一HTML页面,它的源码为:
7 | < img src = "imgs/pic.jpg" /> |
3.添加Global.asax文件,写入以下内容
02 | using System.Collections.Generic; |
05 | using System.Web.Security; |
06 | using System.Web.SessionState; |
10 | public class Global : System.Web.HttpApplication |
13 | protected void Application_Start( object sender, EventArgs e) |
18 | protected void Session_Start( object sender, EventArgs e) |
23 | protected void Application_BeginRequest( object sender, EventArgs e) |
25 | if (HttpContext.Current.Request.Url.AbsolutePath.EndsWith( ".jpg" )&&HttpContext.Current.Request.UrlReferrer.Host!= "localhost" ) |
27 | HttpContext.Current.Response.WriteFile(HttpContext.Current.Server.MapPath( "~/imgs/forbid.png" )); |
28 | HttpContext.Current.Response.End(); |
33 | protected void Application_AuthenticateRequest( object sender, EventArgs e) |
38 | protected void Application_Error( object sender, EventArgs e) |
43 | protected void Session_End( object sender, EventArgs e) |
48 | protected void Application_End( object sender, EventArgs e) |
4.运行网页,用loaclhost显示为pic.jpg文件,如果在地址栏中改为127.0.0.1则会显示我们要的forbid.png文件
原文链接:在Global全局文件中的Application_BeginRequest防盗链