HttpHandler的一个应用,aspx站点伪装为php站点

很简单的小应用,通过httphandler,把后缀名是.php的请求交给指定的Httphandler处理即可。

首先要做的是在web.config配置好。

<httpHandlers>

      <add  verb="*" path="*.php" type="FakePHP.JustFakeIt"/>

</httpHandlers>

httpHandlers结点是在system.web结点下的。

常规配置如上,verb指定是post还是get,path的作用类似于限制请求的路径,比如上面,只要请求是php后缀名的,才能由此httpHandler处理。

type就是指定处理该请求的dll模块,或者类型。本例中就是FakePHP.JustFakeIt这个类,此类实现了IHttpHandler接口。该节点详细说明参考

http://msdn.microsoft.com/en-us/library/aa903367(v=vs.71).aspx

剩下的事情,就是要实现这个处理请求,创建FakePHP.JustFakeIt这样一个类型,然后编码。

 


  1. using System.Web;  
  2. using System.IO;  
  3. using System.Net;  
  4.  
  5. namespace FakePHP  
  6. {  
  7.     /// <summary>  
  8.     /// JustFakeIt 的摘要说明  
  9.     /// </summary>  
  10.     public class JustFakeIt : IHttpHandler  
  11.     {  
  12.  
  13.         public void ProcessRequest(HttpContext context)  
  14.         {  
  15.             context.Response.ContentType = "TEXT/HTML";  
  16.             string page = context.Request.Path;  
  17.  
  18.             WebRequest mywebReq;  
  19.             WebResponse mywebResp;  
  20.             StreamReader sr;  
  21.             string strHTML;  
  22.  
  23.             mywebReq = WebRequest.Create(HttpContext.Current.Request.Url.OriginalString.Replace(context.Request.Path, "/default.aspx"));  
  24.             mywebResp = mywebReq.GetResponse();  
  25.             sr = new StreamReader(mywebResp.GetResponseStream());  
  26.             strHTML = sr.ReadToEnd();  
  27.  
  28.             context.Response.Write(strHTML);  
  29.         }  
  30.  
  31.         public bool IsReusable  
  32.         {  
  33.             get 
  34.             {  
  35.                 return false;  
  36.             }  
  37.         }  
  38.     }  

 

然后运行,加上输入url,请求为任意一个php文件。比如a.php,http://localhost:26962/a.php

那么就可以得到真实的default.aspx的内容了。

以上只是HttpHandler的一个小应用示例,通过这种方法,可以实现一些特殊需求。

附件:http://down.51cto.com/data/2361572













本文转自cnn23711151CTO博客,原文链接:http://blog.51cto.com/cnn237111/1022315 ,如需转载请自行联系原作者


上一篇:Http协议处理器——Http11Processor


下一篇:微软携手 Docker 打造 CNAB,实现跨分布式应用程序的统一管理