时间:2016-02-16 01:12 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【ASP.net中实现基于UrlRewrite的防盗链功能】,下面是详细的讲解!
ASP.net中实现基于UrlRewrite的防盗链功能
void Application_BeginRequest(object sender, EventArgs e)
{
bool IsAllowDomain=false;
bool IsLogin=false;
string CookiesName="UserName", AllowHost, ReferrerHost="";
int CheckType=1;
bool AllowDown=false;
string[] AllowHostArr;
string UrlPattern="", UrlReplace="";
string[] pattern, replace;
string ConfigFile=ConfigurationManager.AppSettings["DownLoadConfig"];
if (ConfigFile !="")
{
try
{
System.Xml.XmlDataDocument XDConfig=new System.Xml.XmlDataDocument();
XDConfig.Load(AppDomain.CurrentDomain.BaseDirectory + @"/" + ConfigFile);
if (XDConfig.SelectSingleNode("DownLoad/CheckType").InnerText !="")
{
CheckType=int.Parse(XDConfig.SelectSingleNode("DownLoad/CheckType").InnerText);
}
if (XDConfig.SelectSingleNode("DownLoad/CookiesName").InnerText !="")
{
CookiesName=XDConfig.SelectSingleNode("DownLoad/CookiesName").InnerText;
}
AllowHost=XDConfig.SelectSingleNode("DownLoad/AllowHost ").InnerText;
AllowHostArr=AllowHost.Split('|');
UrlPattern=XDConfig.SelectSingleNode("DownLoad/UrlPattern").InnerText;
UrlReplace=XDConfig.SelectSingleNode("DownLoad/UrlReplace").InnerText;
pattern=UrlPattern.Split('@');
replace=UrlReplace.Split('@');
if (CookiesName=="") CookiesName="UserName";
IsLogin=false.Equals(Request.Cookies[CookiesName]==null || Request.Cookies[CookiesName].Value=="");
if (Request.UrlReferrer !=null) ReferrerHost=Request.UrlReferrer.Host.ToString();
if (AllowHostArr.Length < 1)
{
IsAllowDomain=true;
}
else
{
for (int HostI=0; HostI < AllowHostArr.Length - 1; HostI++)
{
if (AllowHostArr[HostI].ToLower()==ReferrerHost.ToLower())
{
IsAllowDomain=true;
break;
}
}
}
switch (CheckType)
{
case 1:
AllowDown=true.Equals(IsAllowDomain);
break;
case 2:
AllowDown=IsLogin;
break;
case 3:
AllowDown=true.Equals(IsAllowDomain && IsLogin);
break;
}
if (AllowDown==false)
{
string oldUrl=HttpContext.Current.Request.RawUrl;
string newUrl=oldUrl;
for (int iii=0; iii < pattern.Length; iii++)
{
if (Regex.IsMatch(oldUrl, pattern[iii], RegexOptions.IgnoreCase | RegexOptions.Compiled))
{
newUrl=Regex.Replace(oldUrl, pattern[iii], replace[iii], RegexOptions.Compiled | RegexOptions.IgnoreCase);
oldUrl=newUrl;
}
}
this.Context.RewritePath(newUrl);
}
}
catch
{
}
}
}
关于ASP.net中实现基于UrlRewrite的防盗链功能的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【ASP】ASP.NET中内嵌页面代码的一个问题-NET-内
- 【As】Asp.net中的页面乱码的问题-sp--pn-ne-et
- 【增加记录】asp.net中获取新增加记录的ID Access
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【ASP】ASP.NET 5升级后如何删除旧版本的DNX-NET5
- 【404页面】ASP.NET设置404页面返回302HTTP状态码
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
