暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ASP.Net之笔记12-11(高级-防盗链)

百变则是新 2019-10-30
449


高级-防盗链
1、队列:就是一个集合。栈也是一个集合。只是方式不太一样,一个先进先出,一个先进后出。
2、网站中应用防盗链,在Global.asax文件中,Application_BeginRequest()方法中,比较Request.Url 和 Request.Referrer的IP地址和端口号就可以了。
    1)为什么要写到这个事件中来呢?因为这是咱们开发人员,最早可以介入写代码的地方。
   2)防盗链,这个是越早拦截越好。这样咱们的后台就越省资源,越省CPU、越省内存。
    3)防盗链的代码就忽略了。后续把连接补充上。
    4)Uri.Compare(url1, url2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCultureIgnoreCase);//使用这个方法,来比较两个url的域名和端口时候相同。
3、Url重写。也是在Global.asax文件中,Application_BeginRequest()方法中进行。
    1)假设你请求的地址是:http://localhost:80/a-8.html
    2)Url重写,一般是把后面的地址(a-8.html),是把后台服务器的Net地址给它换成html地址。【这种操作也有点像MVC中的视图路由映射机制(纯属猜测)】
   3)为什么给它换成html地址?为了网站SEO。把咱们后台Aspx页面地址、ashx页面地址,尤其是带着参数地址的转换成 类似 a-8.html的地址。
        (1)实际上,客户端请求的地址是:http://localhost:80/a-8.html
        (2)咱们要把它转换成:http://localhost:80/a.aspx?id=8  这样的一个地址。但是我们允许用户请求上述(1)的地址,就相当于请求了(2)中的地址。
        (3)上述中是怎么做到的?为什么这样来做?为了网站的SEO。
        (4)(1)中的地址SEO就好,(2)中的地址SEO就不好吗?Why?搜索引擎在爬这个地址的时候,一看到地址后面带参数,带参数以后,它的权重就降低了。也就是说你的排名就靠后了。为什么呢?搜索引擎看到这种动态的参数地址的时候,它就认为传递参数发生变化的时候,你这个页面的内容肯定是变化的。页面里面的内容是变化的,搜索引擎怎么做?搜索引擎会把页面下载下来,然后把里面的汉字进行分词,分完词以后取到关键词放到它的数据库里面去,你这个UI地址有这个关键词,那么我搜索内容的时候,搜索关键词到你的页面,一打开你的页面id不相同,内容完全牛马不相及。那么搜索引擎把这个页面呈现给你的时候,推送给你的时候,咱们用户一打开之后,发现页面里面连咱们关键词对应的数据都没有,用户就会感觉这个搜索引擎的体验很差,你的搜索不准。其实不是搜索引擎不准,而是咱们的页面发生了变化。所以说,浏览器为了避免这种情况,或者为了把这种变化 放到后面去,所以就把它的权重降低了。权重一降低,排名就靠后,排名靠后就没有流量,没有流量就没有钱,没有钱就不能生娃子,....就这样循环下去了。
        (5)所以一定要做网站的SEO,提高网站的排名,提高了网站的排名,就提高了网站的收入。
        (6)所以咱们使用(1)中的请求地址来做SEO的优化,搜索引擎在爬咱们的这个页面的时候,它一看这样的一个后缀名地址,它认为这是一个静态的页面,一看是静态的页面,那么权重就会非常的高。因为静态页面是不变化的,所以权重是最高的。
        (7)实际上,咱们请求到(1)中的地址,咱们可以在后台进行一个URL的重写。eg:Request.Url.ToString();//拿到请求的URL地址,我们通过对字符串的处理,再给它还原成相应的地址,如(2)中的地址。
        (8)URL地址怎么还原呢?它们是有一个规则在里面的。一般是通过一个正则表达式来进行还原。
        (9)URL地址还原回来以后,然后进行URL地址重写命令eg:Context.RewritePath(str2);//将URL地址换成新的地址。【重点,关键点】
        (10)URL地址换成新的后,在请求管理的管道中 第7个事件 和 第8个事件 之间,要根据这个HttpContext.URL地址创建对象。【重点,关键点】
        (11)咱们在请求管理的管道中的第一个事件 处理中,就把请求的地址给改掉了。【重点,关键点,难点】
    4)URL地址重写的原理,其实就一句话:Context.RewritePath(str2);
   5)接下来说的就跟MVC的原理有点关系了。它不仅有一个Context.RewritePath(),还有一个Context.RemapHandler();
        (1)Context.RemapHandler();//可以重定向一个处理器。
        (2)咱们最终的Handler的处理器是谁?咱们现在ASP.Net中最终的处理器就是第11个事件执行后的那个对象。就是第7个事件创建的那个Handler。
        (3)其实在 第7个事件 和 第8个事件之间,根据请求的地址创建页面对象,在创建页面对象之前还会做一件事,即:看你有没有指定一个IHttpHandler接口的实例。如果没有指定:根据请求地址创建页面对象。如果已经指定了,则不再创建页面对象了。【重点,新点,补充,关键点】
        (4)你在第7个事件以及第7个事件之前已经给他指定了一个通过Context.RemapHandler()给它指定了一个一般处理程序,后面第7个事件,我们就不再创建页面对象或者一般处理程序了。在11个事件 和 第12个事件之间就执行你指定的PR方法。
        (5)这也是MVC做的事情,在第7个事件中MVC指定了一个MVCHandler,所以就不创建页面对象或者一般处理程序了。在第11个事件 和 第12个事件之间执行的就是MVCHandler指定的PR方法,它的方法处理的就是MVC请求处理的过程。这就是【MVC的原理】【重点,新点,关键点,核心】
        (6)你要是懂了这个管道,MVC现在你已经也学会了。如果说你懂了ASP.Net中的WebForm,那么MVC也是2秒钟的事情。
        (7)当然你也可以定义自己的Handler,使用自己的规则来开发,这将都不是问题。
4、什么是页面静态化?我们先自己请求一下页面,然后把生成的html发送请求的用户。


文章转载自百变则是新,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论