
Request对象的方法和属性Response属性方法
1、HttpRequest的成员
1)Request.UrlReferrer,获取请求的来源。在下载防盗链、图片防盗链处可以应用到。即:把当前请求地址和UrlReferrer地址做一个比较,看一下域名和端口是否一致,如果一致则是当前网站请求,则放行,否则拦截掉。
2)Request.UserHostAddress,获取访问者的IP地址。即可以获取到客户端浏览器所在的机器的IP地址。我们可以做一个IP的过滤,在白名单方面有应用。咱们的请求报文中是看不到这个IP地址的,为什么Request对象中可以看到?咱们之前说过,Socket怎么能拿到对方的IP地址。是通过.RemoteEndpoint来拿取对方的IP地址。
3)Request.MapPath(virtualPath),将虚拟路径转换为磁盘上的物理路径
4)Server.MapPath()方法,也是调用了Request.MapPath(),将虚拟路径转为磁盘上的物理路径。
2、反编译工具:ReSharper-Navigating to Decompiler。这个好像是VS的一个即时反编译插件,可以查看.Net的源码。
3、HttpResponse对象的其它成员:
1)Response.Buffer,接收的是一个布尔值,默认是true,表示是否启用缓冲区。咱们通过Response.Write("sss");写了一个字符串,并不是立马发送给 浏览器客户端,而是到最后,把缓冲区中的内容一块发送给浏览器客户端。如果设置为false,则会写一次就向浏览器客户端发一次。
(1)首先建立一个请求的WebForm页面
(2)在Page_Load中写入如下的测试代码:
Response.Buffer = true;//默认是true
Thread.Sleep(2000);
Response.Write("ssss");
Thread.Sleep(2000);
Response.Write("wwww");
Thread.Sleep(2000);
Response.Write("qqqq");
(3)设置为true,则会等待6秒钟,一次输出。设置为false,2秒钟输出一次,直到输出完毕。
2)Response.BufferOutput,这个反编译以后,是和第一个一样的。Buffer内部就是调用的BufferOutput,表示是否启用缓冲区。
3)Response.Flush(),将缓冲区中的数据发送给浏览器。这个是在启动缓冲区的情况下使用,写一次,我们调用这个Flush方法就会发一次。这就是启用缓冲区,迅速将内容发送到浏览器,就可以使用这个方法。
4)Response.Clear(),把缓冲区中的数据全部清空。在缓冲区中没有发送到浏览器器的数据被清空,就不会发送到浏览器。
5)Response.ContentEncoding,输出流的编码。即:响应报文的编码。
6)Response.ContentType,输出流的内容类型。eg:文本(text/plain)、图片(image/jpeg)
7)Response.OutputStream,通过它可以拿到咱们当前响应的输出流。即:响应的所有东西。最后这个流转换为字节数据,通过Socket发送到浏览器客户端去了。流,咱们从另外一个角度来看,它就是一个字节数组。
8)Response.End(),终止响应,将之前缓存中的数据发送给浏览器。End()方法之后的代码不会被继续执行,End()方法里面调用了Flush()方法。注意:MSDN是这么说的,但是好像有时候反应不过来,还是会执行,咱们认为不会执行就可以了。之前的防盗链就可以通过这个方法来终止响应。





