乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      ASP.NET運行機(jī)制和圖片盜鏈問題

       sumi2005 2011-07-19

      ASP.NET運行機(jī)制和圖片盜鏈問題

        1什么是圖片盜鏈

        讓我們先分析一般的瀏覽現(xiàn)象,其中最重要的一點就是一個完整的頁面并不是一次全部傳送到客戶端的。如果你請求的是一個帶有許多圖片和其它信息的頁面,那么最先的一個Http請求被傳送回來的是這個頁面的文本,然后通過客戶端的瀏覽器對這段文本的解釋執(zhí)行,發(fā)現(xiàn)其中還有圖片,那么客戶端的瀏覽器會再發(fā)送一條Http請求,當(dāng)這個請求被處理后那么這個圖片文件會被傳送到客戶端,然后瀏覽器回將圖片安放到頁面的正確位置,就這樣一個完整的頁面也許要經(jīng)過發(fā)送多條Http請求才能夠被完整的顯示?;谶@樣的機(jī)制,就會產(chǎn)生一個問題,那就是盜鏈問題:就是一個網(wǎng)站中如果沒有起頁面中所說的信息,例如圖片信息,那么它完全可以將這個圖片的連接到別的網(wǎng)站。這樣沒有任何資源的網(wǎng)站利用了別的網(wǎng)站的資源來展示給瀏覽者,提高了自己的訪問量,而大部分瀏覽者又不會很容易地發(fā)現(xiàn),這樣顯然,對于那個被利用了資源的網(wǎng)站是不公平的。

        2 解決方法

        那么現(xiàn)在利用ASP.NET中的這HttpHandler能夠很好地解決這個問題,之所以能夠發(fā)生這個問題。就是因為我們在默認(rèn)狀態(tài)下只處理那些動態(tài)的網(wǎng)頁,象asp,aspx等等,但當(dāng)有請求一個圖片文件時,IIS就會直接提取資源并發(fā)送給客戶端,這樣看來就顯得有些盲目了吧

        所以我們要創(chuàng)建自己的HttpHandler來處理圖片文件。例如jpg文件。

        3 那么我們?nèi)绾谓⒆约旱腍ttpHandler并在web應(yīng)用程序中注冊呢?

       ?。?)建立自己的HttpHandler

        創(chuàng)建一個繼承了System.Web.IHttpHandler接口的類,在System.Web.IHttpHandler接口只有兩個成員

        1 IsReusable 屬性,其返回一個值代表其他http請求是否可以使用當(dāng)前繼承了 System.Web.IHttpHander接口的類的實例。

        2 ProcessRequest(System.Web.HttpContext context) 方法,除了用戶自定義中被要求處理的特殊的http請求。

        其中的參數(shù) System.Web.HttpContext 類的實例裝入了一個http請求中http協(xié)議中要求的所有信息。其中System.Web.HttpContext 類中包含有屬性 Request 使得從客戶端發(fā)送過來的http請求信息的值可以被方便地讀??;屬性Response ,其中封裝了需要返回給客戶端的信息和操作。當(dāng)然還有許多常用的屬性和方法,在此就不詳述了,我們這里只用到這兩個屬性。

       ?。?)web應(yīng)用程序中注冊自定義的HttpHandler。

        在 Web.config這個網(wǎng)絡(luò)應(yīng)用程序配置文件中加入注冊信息。

        4 那么我們看看在ProcessRequest(System.Web.HttpContext context)方法是如何對請求圖片文件的http請求進(jìn)行處理的。

        public void ProcessRequest(System.Web.HttpContext context)

        context.Response.Expires = 0;//設(shè)置客戶端緩沖中文件過期時間為0,即立即過期。

        context.Response.Clear();//清空服務(wù)器端為此會話開辟的輸出緩存

        context.Response.ContentType = getContentType(context.Request.PhysicalPath); //獲得文件類型

        context.Response.WriteFile(context.Request.PhysicalPath);//將請求文件寫入到服務(wù)器端為此會話開辟的輸出緩存中

        context.Response.End();//將服務(wù)器端為此會話開辟的輸出緩存中的信息傳送到客戶端

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

        context.Response.Expires = 0; //設(shè)置客戶端緩沖中文件過期時間為0,即立即過期。

        context.Response.Clear();//清空服務(wù)器端為此會話開辟的輸出緩存

        context.Response.ContentType = getContentType("error.jpg"); //獲得文件類型

        context.Response.WriteFile("error.jpg");//將特殊的報告錯誤的圖片文件寫入到服務(wù)器端為此會話開辟的輸出緩存中

        context.Response.End();//將服務(wù)器端為此會話開辟的輸出緩存中的信息傳送到客戶端

        5 待這一切都做好了,我們還要在讓IIS知道,遇到圖片文件也要進(jìn)行處理。

        這件事情我們還要讓IIS知道。而為什么aspx文件會被處理,而默認(rèn)的那些可以處理aspx的HttpHandler在哪里,其實是因為IIS在接收到aspx頁面請求時,會為其自動加載一個C:WINDOWSMicrosoft.NETFrameworkv1.1.4322aspnet_isapi.dll文件,這個文件是專為處理aspx頁面所用的,是。NET Framework的一部份,我們要IIS在接收到j(luò)pg文件請求時也為其加載這個dll文件。

        我們首先添加一個處理,讀者可以參考aspx文件的配置就可以對處理jpg文件進(jìn)行配置,我們同樣也為jpg文件加載aspnet_isapi.dll文件,因為我們對jpg文件的處理也是建立在 ASP.NET機(jī)制之上的。具體配置,如下圖:

        OK,現(xiàn)在你已經(jīng)對此方法有一定的了解了,其實自定義HttpHandler還有其他的應(yīng)用,在此我們就不贅述了,下面的工作就需要讀者多多實踐了,并從中學(xué)習(xí)到更多的東西獲得更多的經(jīng)驗,更好地應(yīng)用設(shè)計開發(fā)的需求。來源華軍資訊編輯整理)

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多