• 10.在Global全局文件中的Application_BeginRequest示例


    只要有人访问本网站,都要执行全局文件的Application_BeginRequest事件。因此我们可以防盗链。

    示例要求:凡不是网站本机登录的都给客户端提示,用图片显示。

    分析:由于网页在加载时不是一次性全部加载,如先加载网页,再加载相关的js文件,再加载图片等,因此在客户端上有个图片元素,在此事件中判断请求的类型是否为图片并且是否是以localhost登录的,如果不是就发送客户端的另个图片。

    开发步骤:

       1.在目录中放两个图片,一个图片为正常显示,另一个为禁用提示的图片

       2.新建一HTML页面,它的源码为:

      

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
        <img src="imgs/pic.jpg" />
    </body>
    </html>

       3.添加Global.asax文件,写入以下内容

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.SessionState;
    
    namespace GlobalTest
    {
        public class Global : System.Web.HttpApplication
        {
    
            protected void Application_Start(object sender, EventArgs e)
            {
    
            }
    
            protected void Session_Start(object sender, EventArgs e)
            {
    
            }
    
            protected void Application_BeginRequest(object sender, EventArgs e)
            {
               if(HttpContext.Current.Request.Url.AbsolutePath.EndsWith(".jpg")&&HttpContext.Current.Request.UrlReferrer.Host!="localhost")
               {
                   HttpContext.Current.Response.WriteFile(HttpContext.Current.Server.MapPath("~/imgs/forbid.png"));
                   HttpContext.Current.Response.End();
               }
    
            }
    
            protected void Application_AuthenticateRequest(object sender, EventArgs e)
            {
    
            }
    
            protected void Application_Error(object sender, EventArgs e)
            {
    
            }
    
            protected void Session_End(object sender, EventArgs e)
            {
    
            }
    
            protected void Application_End(object sender, EventArgs e)
            {
    
            }
        }
    }

    4.运行网页,用loaclhost显示为pic.jpg文件,如果在地址栏中改为127.0.0.1则会显示我们要的forbid.png文件,如下图

  • 相关阅读:
    链表VS数组
    数组VS集合
    最好、最坏、平均、均摊时间复杂度
    代码时间、空间复杂度分析
    “echo >”和“echo >>”的区别
    两数之和
    hadoop学习之----------IntelliJ IDEA上实现MapReduce中最简单的单词统计的程序(本地 和 hadoop 两种实现方式)
    Ubuntu16.04中解决关于The Internet Topology Zoo 的gml文件的读取并画图的问题
    Ubuntu16.04解决Ubuntu Sofware打开后无反应
    Ubuntu16.04中如何启用floodlight的一种方式
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3174849.html
Copyright © 2020-2023  润新知