ASP.NET 圖片防盜鏈的實(shí)現(xiàn)原理分析
首先,添加個(gè)httpHandlers請(qǐng)求,WEBCONFIG部分配置節(jié)如下:
<httpHandlers>
<add verb="*" path="*.jpg" type="myhandler,App_Code"/>
</httpHandlers> 注意:對(duì)應(yīng)于system.web之下,別添錯(cuò)了哦!
然后添加個(gè)class,取名為myhandler繼承于IHttpHandler
class原型如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public class myhandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string FileName = context.Server.MapPath(context.Request.FilePath);
if (context.Request.UrlReferrer.Host == null)
{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("~/images/no.png");//被替換圖片
}
else
{
if (context.Request.UrlReferrer.Host.IndexOf("localhost") > -1)//這里是你的域名
{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile(FileName);
}
else
{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("~/images/no.png");
}
}
}
public bool IsReusable
{
get { return true; }
}
public myhandler()
{
}
}
myhandler繼承自IHttpHandler實(shí)現(xiàn)了對(duì)url來(lái)源來(lái)判斷jpg圖片是否被盜鏈,本class中以localhost為例,修改localhost和images/no.png參數(shù)即可
次方法也可應(yīng)用于URL偽靜態(tài)。
下一次聊下圖片與ASP.NET程序的服務(wù)器分離,歡迎大家光臨本站。
下面是補(bǔ)充
所謂URL靜態(tài)化(聲明下:這里說(shuō)的是偽靜態(tài),真正網(wǎng)頁(yè)靜態(tài)化就不說(shuō)了可以用最簡(jiǎn)單的請(qǐng)求返回response實(shí)現(xiàn),但好像久而久之?dāng)?shù)據(jù)量會(huì)很龐大,所以就不說(shuō)了)就是把動(dòng)態(tài)的網(wǎng)頁(yè)看起來(lái)像靜態(tài)的一樣。如:aspnet.aspx?id=5 靜態(tài)化:aspnet-5.html或/aspnet/5
SEO(搜索引擎優(yōu)化),更青睞于靜態(tài)化的網(wǎng)頁(yè),所以網(wǎng)頁(yè)靜態(tài)化對(duì)于專(zhuān)業(yè)的SEOer來(lái)說(shuō)還是必須掌握的,下面我告訴大家一個(gè)方法來(lái)實(shí)現(xiàn)在ASP.NET下面的網(wǎng)頁(yè)靜態(tài)化。
下面給一個(gè)DEMO,下載地址:http://www.dbjr.com.cn/codes/23902.html
這個(gè)DEMO實(shí)現(xiàn)了網(wǎng)頁(yè)的URL的偽靜態(tài),其原理通過(guò)匹配url的正則,來(lái)進(jìn)行網(wǎng)頁(yè)重定向,這個(gè)DEMO里面有這么個(gè)config,<add virtualUrl="~/microsoft*.*" destinationUrl="~/default.aspx" />
也就是說(shuō)請(qǐng)求microsoft.html,microsoft.shtml,microsoft.do都會(huì)映射到default.aspx
這個(gè)正則把URL重定向一個(gè)頁(yè)面,沒(méi)有帶參數(shù),我先來(lái)介紹下帶參數(shù)如何實(shí)現(xiàn),下面我加了這個(gè)規(guī)則
<add virtualUrl="~/default-([0-9]*)" destinationUrl="~/default.aspx?id=$1" />
這個(gè)正則匹配了,這樣的URL(假設(shè)http://www.xx.com/是你的域名), www.xx.com/microsoft-123 映射到www.xx.com/default.aspx?id=123
那么就實(shí)現(xiàn)了參數(shù)的傳遞
多個(gè)參數(shù)的傳遞可以用如下正則實(shí)現(xiàn),各位高手想用什么樣的靜態(tài)化規(guī)則就自己寫(xiě)正則怎么實(shí)現(xiàn)吧,下面我給出一種目錄化的URL偽靜態(tài)規(guī)則
<add virtualUrl="~/default/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)" destinationUrl="~/default.aspx?par1=$1&par2=$2" />這里要注意的就是&(&)
相關(guān)文章
asp.net音頻轉(zhuǎn)換之.amr轉(zhuǎn).mp3(利用ffmpeg轉(zhuǎn)換法)
AMR轉(zhuǎn)MP3可實(shí)現(xiàn)將手機(jī)上的AMR錄音轉(zhuǎn)換成流行的MP3格式,以適用更廣泛的應(yīng)用。AMR的體積非常小,適用于存儲(chǔ)在手機(jī)中,當(dāng)我們想將在手機(jī)上的音頻上傳到網(wǎng)絡(luò),就需要將其轉(zhuǎn)換成MP3等流行的格式,本文就是介紹asp.net利用ffmpeg轉(zhuǎn)換法將.amr轉(zhuǎn).mp3的方法,下面來(lái)一起看看吧。2016-12-12ASP.NET MVC 2右鍵菜單和簡(jiǎn)單分頁(yè)實(shí)例講解
在這里我們將討論的是通過(guò)一個(gè)插件實(shí)現(xiàn)ASP.NET MVC 2中的右鍵菜單和一個(gè)相當(dāng)簡(jiǎn)單的分頁(yè),希望對(duì)大家有所幫助。2015-09-09asp.net實(shí)現(xiàn)調(diào)用帶有輸出參數(shù)的存儲(chǔ)過(guò)程實(shí)例
這篇文章主要介紹了asp.net實(shí)現(xiàn)調(diào)用帶有輸出參數(shù)的存儲(chǔ)過(guò)程,結(jié)合實(shí)例形式分析了前端基于jQuery的ajax調(diào)用及后臺(tái)存儲(chǔ)過(guò)程調(diào)用的相關(guān)技巧,需要的朋友可以參考下2016-03-03在Asp.net下實(shí)現(xiàn)變長(zhǎng)連接的web即時(shí)應(yīng)用的實(shí)現(xiàn)范例及ReverseAjax的演示介紹
根據(jù)公司近期的一個(gè)培訓(xùn)整理的資料,附件包括一個(gè)完整的使用變長(zhǎng)連接的web即時(shí)聊天室的范例和針對(duì)ReverseAjax的ppt培訓(xùn)文稿,其中ppt中包含了對(duì)范例程序的完整講解2011-12-12解決asp.net mvc UpdateModel更新對(duì)象后出現(xiàn)null問(wèn)題的方法
這篇文章主要介紹了解決asp.net mvc UpdateModel 更新對(duì)象后出現(xiàn)null問(wèn)題的方法,需要的朋友可以參考下2015-11-11ASP.NET中RadioButtonList綁定后臺(tái)數(shù)據(jù)后觸發(fā)點(diǎn)擊事件
這篇文章主要介紹了ASP.NET中RadioButtonList綁定后臺(tái)數(shù)據(jù)后觸發(fā)點(diǎn)擊事件的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-05-05ASP.NET MVC DropDownList數(shù)據(jù)綁定及使用詳解
DropDownList 控件用于創(chuàng)建下拉列表。DropDownList 控件中的每個(gè)可選項(xiàng)都是由 ListItem 元素定義的!該控件支持?jǐn)?shù)據(jù)綁定2012-12-12Aspose.Cells 讀取受保護(hù)有密碼的Excel文件
這篇文章主要介紹了Aspose.Cells 讀取受保護(hù)有密碼的Excel文件,簡(jiǎn)單實(shí)用,需要的朋友可以參考下。2016-06-06基于.Net實(shí)現(xiàn)前端對(duì)話框和消息框
這篇文章主要介紹了基于.Net實(shí)現(xiàn)前端對(duì)話框和消息框的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07通過(guò)剪貼板實(shí)現(xiàn)將DataGridView中的數(shù)據(jù)導(dǎo)出到Excel
這篇文章主要介紹了如何通過(guò)剪貼板實(shí)現(xiàn)將DataGridView中的數(shù)據(jù)導(dǎo)出到Excel,需要的朋友可以參考下2014-05-05