asp.net 2.0中實現防盜鏈

來源:互聯網
上載者:User
看書時發現一個實現asp.net 2.0中實現防止盜鏈的方法,其實際的原理就是利用了IIS中HttpHandler模組來處理的。因為比如

平時用IIS只是處理如asp,aspx等檔案,沒處理如iis,jpg等圖片的,下面簡單小結下

1 建一個網站(vs.net 2005),然後添加一個Handler.ashx處理檔案,處理HTTP請求,代碼如下

程式碼

 <%@ WebHandler Language="C#" Class="Handler" %>

using System;

using System.Web;

public class Handler : IHttpHandler {

    

    public void ProcessRequest (HttpContext context) {

        //判斷是否是本地引用,如果是則返回給用戶端正確的圖片

        //這裡的判斷就是用到了http請求中所記錄的頁資訊

        //如果是網站,可將“localhost”修改為網站地址

        if (context.Request.UrlReferrer.Host == "localhost")

        {

            //設定用戶端緩衝中檔案到期時間為0,即立即到期。

            context.Response.Expires = 0;

            //清空伺服器端為此會話開闢的輸出緩衝

            context.Response.Clear();

            //獲得檔案類型

            context.Response.ContentType = "image/jpg";

            //將請求檔案寫入到輸出緩衝中

            context.Response.WriteFile(context.Request.PhysicalPath);

            //將輸出緩衝中的資訊傳送到用戶端

            context.Response.End();

        }

        //如果不是本地引用,則屬於盜鏈引用,返回給用戶端錯誤的圖片

        else

        {

            //設定用戶端緩衝中檔案到期時間為0,即立即到期。

            context.Response.Expires = 0;

            //清空伺服器端為此會話開闢的輸出緩衝

            context.Response.Clear();

            //獲得檔案類型

            context.Response.ContentType = "image/jpg";

            //將特殊的報告錯誤的圖片檔案寫入到輸出緩衝中

            context.Response.WriteFile(context.Request.PhysicalApplicationPath + "error.jpg");

            //將輸出緩衝中的資訊傳送到用戶端

            context.Response.End();

        }

    }

    public bool IsReusable

    {

        get

        {

            return true;

        }

    }

}

 

然後同樣建立一個Handler.cs檔案,放在app_code目錄下,其內容就是上面的handler.aschx了,

2  在web.config中配置如下

程式碼

 <httpHandlers>

   <add verb = "*" path = "*.jpg"   type="Handler" />

  </httpHandlers> 

3  在IIS裡處理

    在IIS裡的預設網站的“配置”裡,在“應用程式對應”裡添加映射

其中映射的可執行檔為  “vs.net2005安裝路徑\aspnet_isapi.dll",副檔名為".jpg",這樣就可以了!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.