Request,Response,Server对象

Request成员:

1.Request.UrlReferer 请求的来源,可以根据这个判断从百度搜的哪个关键词,防下载盗链,防图片盗链,可以伪造(比如迅雷)。

2.Request.UserHostAddress获得访问者的IP地址

3.Request.MapPath(virtualPath):将虚拟路径转换为磁盘上的物理路径。

 

 

    图片防盗链的思想就是将客户端上次请求的URL信息和当前客户请求的URL信息进行比较,如果同在一个域名下或同一个IP地址下,

    就说明是自己网站内部的页面   在申请自己网站内部的图片。在一般处理程序中,简单代码如下:

     Uri uri1 = context.Request.UrlReferrer;

        Uri uri2 = context.Request.Url;

        if (Uri.Compare(uri1, uri2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.OrdinalIgnoreCase) != 0)

        {

                   context.Response.Clear();

                   context.Response.Close();

   

        }

        else

        {

        }

 

 

  Response对象成员

  响应的缓冲输出:为了提高服务器的性能,ASP.Net向浏览器Write的时候默认并不会没Write一次

  都会立即输出到浏览器,而是会缓存数据,到合适的时机或是响应结束才能将缓冲区的数据一起发送到浏览器。

  Response对象的主要成员:

  Response.Buffer,Response,BuffetOutput:这两个其实是一样,用来控制是否采用响应缓存,默认是true;

  Response.Flush()将缓冲区中的数据发送给浏览器。这在需要将write出来的内容立即输出到浏览器的场合非常的使用。

 例如:我们可以使用一个小例子来模拟Response.Flush()的效果:

       在一般处理程序中:

        public void ProcessRequest (HttpContext context) {

         context.Response.ContentType = "text/html";

         for (int i = 0; i < 20; i++)

         {

            context.Response.Write(i);

            context.Response.Flush();

            System.Threading.Thread.Sleep(500);

            

            }

           }

     使用response.flush那么数字是一个一个蹦出来的。

     如果不适用,数字一口气会都加载下来。

     Response.Clear()清空缓存区中的数据,这样在缓存区中的没有发送到浏览器端的数据被清空,不会被发送到浏览器。

     Response.ContentEncoding输出流的编码。

     Resoponse.ContentType输出流的内容类型。比如是html(text/html)还是普通文本(text/plain)还是JPEG图片(image/JPEG);

     Response.OutputStream输出流,在输出图片。Excel文件等非文本内容的时候也要使用它。

     Response.End()终止响应,将之前缓存中的数据发给浏览器,End()之后的代码不会被继续执行,在反编译器内部,End方法调用了Flush()方法,

     在终止一些非法请求的时候,可用End()终止请求。

 

 

Server属性:

Server属性是HttpServerHtility的一个实例,它对工队服务器上的方法和属性的访问。

Server.MapPath():获取文件的物理路径

Server.Executetransfer():执行另一个页面的脚本

server.HtmlEncode()HtmlDecode()方法:将文本编码成可以在浏览器中科正确浏览的格式

server.UrlEncode方法和UrlDecode方法:URL编码和解码

Server.Tranfser()ResponseRedirect()的区别:

Server.Tranfser()是服务器内部的接管(不可以重定向到外部网站),这个重定向是和浏览器没有任何关系的,索引浏览器的地址栏不会发生变化。

Response.Redirect    ()可以重定向到外部网站

     

原文地址:https://www.cnblogs.com/hanwenhuazuibang/p/2972269.html