zoukankan      html  css  js  c++  java
  • ASP.NET url重写与图片防盗链 I

    现在的网站优化方式有很多、其中一种就是url重写、很多人都认为url重写很难很复杂,其实很简单的。我们可以在全局处理程序中的Application_BeginRequest()事件中来写。
    下面的就是一个典型、简单的url重写的例子。

     1 protected void Application_BeginRequest(object sender, EventArgs e)
     2  {
     3             //判断请求的路径  photos-id.html
     4             string strReg = @"photos\-(\d{1,4})\.aspx";
     5             //请求的路径
     6             string OverrideUrl = Request.AppRelativeCurrentExecutionFilePath;
     7             Match match = Regex.Match(OverrideUrl, strReg, RegexOptions.IgnoreCase);
     8             if (match.Success)
     9             {
    10                 //取到id
    11                 string id = match.Groups[1].Value;
    12                 Context.RewritePath("~/PhotosInfo.aspx?id=" + id);
    13             }
    14 
    15             if (OverrideUrl.ToLower().Contains("index.aspx"))
    16             {
    17                 Context.RewritePath("~/Index.aspx");
    18             }
    19 }

    不知道听过图片防盗链没有?上次有个做网站很多年的大神居然没有听过、我只是一个新手。就是一个网站上面的图片是自己没有的。是通过抓去别人的服务器上面的图片放到自己的网站上面来。这时候不想让别这样的利用我们的资源,就可以进行防盗链。这里主要是通过Referrer来判断的。判断上一次请求的路径和这次请求的路径是否是一致的、如果是一致的那就是直接访问的这张照片,如果不一致、那么就是通过别人的服务器转到自己的服务器上面来的。这里同样是在Application_BeginRequest()中写的。

     1                 //获得路径
     2             string rawUrl = Request.RawUrl.ToLower();
     3             if (rawUrl.Contains("/UpLoadImage/"))//判断是否是直接访问这个文件夹
     4             {
     5                 Uri url = Request.Url;
     6                 Uri reffer = Request.UrlReferrer;
     7                 if (!Commpar(url, reffer))
     8                 {
    
     9                     //不等、是盗链
    11                     string path = Request.MapPath("~/daolian.jpg");
    12                     Response.WriteFile(path);
    13                     Response.End();
    14                 }
    15             }
    1         //判断域名是否是一样
    2         bool Commpar(Uri url1, Uri url2)
    3         {
    4             return Uri.Compare(url1, url2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCultureIgnoreCase) == 0;
    5         }
  • 相关阅读:
    [转] 献给所有正在找路的人
    在同一表单内,多个提交按钮的处理方式
    javascript高级选择器querySelector和querySelectorAll
    一位年轻女董事长的37条忠告很受启发吧?
    函数的延迟加载
    WCF的CommunicationObjectFaultedException异常问题
    WCF Test Client对象数组输入问题
    [转载]C#开发Winform记录用户登录状态的方法
    using(C#)
    使用 SCTP 优化网络
  • 原文地址:https://www.cnblogs.com/lxsweat/p/3086160.html
Copyright © 2011-2022 走看看