BeforeHttpRequest事件

BeforeHttpRequest事件和HttpRequest事件都可以响应Http访问请求,向客户端发送网页和文件。

重要提示:

1、BeforeHttpRequest执行的时候,还没有接收客户端上传的表单数据和文件,所以在此事件中,PostValues、Files和SaveFiles三个成员无效。

2、BeforeHttpRequest事件代码执行完毕之后,默认会继续执行HttpRequest事件,除非在BeforeHttpRequest中将Cancel属性设置为True,或者使用了WriteString或WriteFile等方法向客户端发送了数据。

3、BeforeHttpRequest和HttpRequest使用的是同一个e参数,所以在BeforeHttpRequest进行的任何设置,都等同在HttpRequest事件中进行了同样的设置。

两个事件的本质区别在于:BeforeHttpRequest在接收数据和文件之前触发,HttpRequest在接收数据和文件之后触发,BeforeHttpRequest非常适合提前做 前置验证工作。

例如有人上传恶意文件(或大文件炸弹),BeforeHttpRequest可直接拒绝,而HttpRequest则将恶意文件接收并存储在一个临时目录后再触发,消耗了服务期资源接收,占用了硬盘空间存储,而且恶意文件( 或大文件炸弹)已经在服务器上,有可能会攻击得逞。

示例

假定做了一个名为upload.htm的上传页面,一切都按照原来设计,但是在BeforeHttpRequest事件中加上了代码:

Dim Token As String = e.Headers("token")
If
Token <> "定期随机生成的token字符串" Then
    e.Cancel = True
   
'e.WriteString("
可以根据需要返回信息,直接cancel对方会显示404错误")
End
If

现在只有通过token验证的访问请求,才会触发HttpRequest事件,也就是才能上传文件,避免非法访问占用服务器资源。

BeforeHttpRequest的e参数属性有:

HttpRequest的e参数方法有:


本页地址:http://www.foxtable.com/mobilehelp/topics/0295.htm