[ASP.NET] Request和Response的应用

本文详细介绍了ASP.NET中Request和Response对象的应用,包括如何使用Request获取客户端信息,如URL来源、用户IP和Cookies,以及如何利用Response进行数据输出控制、重定向和设置Cookies。

前言:在ASP.NET中经常会用到Request和Response,这篇博客就来和大家分享一下Request和Response的应用。

(一)Request(请求)

1、Request.UrlReferrer

Request.UrlReferrer 请求的来源,可以根据这个判断从百度搜的哪个关键词、【防下载盗链】、【防图片盗链】,可以伪造(比如迅雷)。“本图片仅供如鹏网内部交流使用”,在DZ中测试。全局防盗链用Globals.asax

2、Request.UserHostAddress

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

3、Request.Cookies

Request.Cookies 获取浏览器发过来的浏览器端的Cookie,从它里面读取Cookie值。

比如context.Request.Cookies[“mysessionid”],使用Request.Cookies 的时候只是读取,将Cookie写回浏览器要用Response.Cookies

4、Request.MapPath(virtulPath)

将虚拟路径转换为磁盘上的物理路径,Request.MapPath("~/a/b.aspx")就会得到D:\2019\WebSites\WebSite4\a\b.aspx

(二)Response(响应)

响应的缓冲输出:为了提高服务器的性能,ASP.Net向浏览器Write的时候默认并不会每Write一次都会立即输出到浏览器,而是会缓存数据,到合适的时机或者响应结束才会将缓冲区中的数据一起发送到浏览器。

Response对象的主要成员:

1、Response.Buffer、Response.BufferOutput

经过Reflector反编译,发现两个属性是一样的,Buffer内部就是调用的BufferOutput。这个属性用来控制是否采用响应缓存,默认是true。

2、Response.Flush()将缓冲区中的数据发送给浏览器。

这在需要将Write出来的内容立即输出到浏览器的场合非常适用。
案例:大批量数据的导入,显示正在导入第*条数据,用Thread.Sleep模拟耗时。

3、Response.Clear()

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

4、Response.ContentEncoding

输出流的编码。

5、Response.ContentType

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

6、Response.Cookies

返回给浏览器的Cookie的集合,可以通过它设置Cookie

7、Response.OutputStream

输出流,在输出图片、Excel文件等非文本内容的时候要使用它

8、Response.End()

终止响应,将之前缓存中的数据发给浏览器,End()之后的代码不会被继续执行,End方法里调用了Flush()方法。在终止一些非法请求的时候,比如盗链等可以用End()立即终止请求。

9、Response.Redirect(url) 重定向浏览器到新的网址。

即可以重定向到站外网址也可以重定向到站内网址。Response.Redirect(“http://www.rupeng.com”)、Response.Redirect(“a.htm”)。Redirect是向浏览器发回302重定向(还有一个Location告诉浏览器要重定向到哪个页面),是通知浏览器“请重新访问url这个网址”,这个过程经历了服务器通知浏览器“请重新访问url这个网址”和浏览器接到命令访问新网址的过程。使用HttpWatch查看整个响应过程的Http报文。用Redirect因为是浏览器自己去重新访问新网址的,所以在地址栏中是可以看到网址的变化的。后面会用来防止刷新浏览器时提示“重试”。

10、Response.SetCookie(HttpCookie cookie)

向输出流中更新写到浏览器中的Cookie,如果Cookie存在就更新不存在就增加。是对Response.Cookies的简化调用。

11、Response.Write()向浏览器输出内容。

总结:Request和Response的应用很广泛,在i+1的基础上多学习,多总结。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值