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",這樣就可以了!

PS:有的朋友在使用過程中發現直接將 Handler.cs 放在 App_code 目錄即可,喜歡的朋友可以嘗試一下!  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.