如何防止别人盗用自己网站的图片链接或文件链接代码.docx
- 文档编号:1799991
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:10
- 大小:39.68KB
如何防止别人盗用自己网站的图片链接或文件链接代码.docx
《如何防止别人盗用自己网站的图片链接或文件链接代码.docx》由会员分享,可在线阅读,更多相关《如何防止别人盗用自己网站的图片链接或文件链接代码.docx(10页珍藏版)》请在冰豆网上搜索。
如何防止别人盗用自己网站的图片链接或文件链接代码
如何防止别人盗用自己网站的图片链接或文件链接
HttpHandler的使用
1、概述
说明:
HttpHandler是一个HTTP请求的真正处理中心。
在HttpHandler容器中,ASP.NETFramework才调用HttpHandler的ProcessRequest成员方法来对这个HTTP请求进行真正的处理,真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。
2、举例
以一个aspx页面为例,正是在HttpHandler这里,一个aspx页面才被系统处理解析,并将处理完成的结果继续经由HttpModule传递下去,直至到达客户端。
当然,对于aspx页面,ASP.NETFramework在默认情况下是交给System.Web.UI.PageHandlerFactory这个HttpHandlerFactory来处理的。
当一个HTTP请求到达这个HttpHandlerFactory时,HttpHandlerFactory会提供出一个HttpHandler容器,交由这个HttpHandler容器来处理这个HTTP请求。
一个HTTP请求都是最终交给一个HttpHandler容器中的ProcessRequest方法来处理的。
3、HttpHandler
(1)实现HttpHandler,必须继承自IHttpHandler接口。
下面是这个接口的定义:
usingSystem;
namespaceSystem.Web
{
publicinterfaceIHttpHandler
{
//其他Request是否可以使用IHttpHandler
boolIsReusable{get;}
//处理HttpRequest
voidProcessRequest(HttpContextcontext);
}
}
(2)自定义HttpHandler
新建一个网站,default.aspx页面:
default.aspx.cs:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
namespaceWebApplication1
{
publicpartialclass_Default:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
Response.Write("
来自Default.aspx页面
");
}
}
}
新添一个类库MyHandler,添加一个类如下:
usingSystem;
usingSystem.Web;
usingSystem.Web.SessionState;
namespaceWebApplication1
{
publicclassMyTestHandler:
IHttpHandler,IRequiresSessionState
{
publicboolIsReusable{get{returntrue;}}
publicvoidProcessRequest(HttpContextcontext)
{
context.Response.Write("
ThisisaHttpHandlerTest
");context.Session["Test"]="
blue;\">在HttpHandler容器中调用Session
";blue;\">在HttpHandler容器中调用Session
context.Response.Write(context.Session["Test"]);
}
}
}
(3)配置文件
在web.config文件的system.web节点下,添加:
(4)注意
<1>、.NET为提供了很多系统默认HttpHandler类,用来适应不同类型的HttpRequest。
比如aspx,在machine.config中是这样定义的:
这就说明遇到aspx的Request请求,会将其交给System.Web.UI.PageHandlerFactory的HttpHandler类来处理。
<2>、如果自己定义了新的HttpHandler,而且在web.config中指定,则系统只会使用这个新的HttpHandler,而不再使用原先默认的或者指定的.
4、HttpHandlerFactory
ASP.NETFramework实际不直接将相关的页面资源HTTP请求定位到一个其内部默认的IHttpHandler容器之上,而定位到了其内部默认的IHttpHandler工厂上。
IHttpHandler工厂的作用是对IHttpHandler容器进行调度和管理,这样做的优点是大大增强了系统的负荷性,提升了效率。
(1)IHttpHandlerFactory接口
IHttpHandlerFactory接口包含两个方法:
GetHandler方法返回实现IHttpHandler接口的类的实例,ReleaseHandler方法使工厂可以重用现有的处理程序实例。
usingSystem;
usingSystem.Web;
namespaceSystem.Web.UI
{
publicclassPageHandlerFactory:
System.Web.IHttpHandlerFactory2,IHttpHandlerFactory
{
protectedinternalPageHandlerFactory();
publicvirtualIHttpHandlerGetHandler(HttpContextcontext,stringrequestType,stringvirtualPath,stringpath);
publicvirtualvoidReleaseHandler(IHttpHandlerhandler);
}
}
(2) 实现一个简单的HttpHandler工厂
类库新添一个文件MyHandlerFactor.cs:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
namespaceWebApplication1
{
publicclassMyHandlerFactory:
IHttpHandlerFactory
{
publicIHttpHandlerGetHandler(HttpContextcontext,stringrequestType,stringurl,stringpathTranslated)
{
stringfileName=url.Substring(url.LastIndexOf("/")+1);
stringobjName=fileName.Substring(0,fileName.IndexOf("."));
stringclassName="WebApplication1."+objName;
objectobjHandler=null;
try
{
//采用动态反射机制创建相应的IHttpHandler实现类。
objHandler=Activator.CreateInstance(Type.GetType(className));
context.Response.Write(className);
}
catch(Exceptione)
{
thrownewHttpException("工厂不能为类型"+objName+"创建实例。
",e);
}
return(IHttpHandler)objHandler;
}
publicvoidReleaseHandler(IHttpHandlerhandler)
{
}
}
publicclassHandler1:
IHttpHandler
{
publicboolIsReusable{get{returntrue;}}
publicvoidProcessRequest(HttpContextcontext)
{
context.Response.Write("
这是来自于MyHandlerFactory里的处理.
");
context.Response.Write("
来自Handler1的信息.
");}
}
publicclassHandler2:
IHttpHandler
{
publicboolIsReusable{get{returntrue;}}
publicvoidProcessRequest(HttpContextcontext)
{
context.Response.Write("
这是来自于MyHandlerFactory里的处理.
");
context.Response.Write("
来自Handler2的信息.
");}
}
}
到这里,针对Handler1.aspx和Handler2.aspx两个页面的http请求我们就通过HttpHandler工厂处理好了。
5、HttpHandler和HttpModule的区别
主要有两点:
(1)先后次序.先IHttpModule,后IHttpHandler,IHttpHandler处理结束后再交给IHttpModule;
(2)对请求的处理上:
IHttpModule是属于大小通吃类型,无论客户端请求的是什么文件,都会调用到它;例如aspx,html,rar的请求;
IHttpHandler则属于挑食类型,只
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何 防止 别人 盗用 自己 网站 图片链接 文件 链接 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)