在http模块中检测页面刷新
我们如何检测 http 模块中的页面刷新?
How do we detect page refresh in a http module ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我们如何检测 http 模块中的页面刷新?
How do we detect page refresh in a http module ?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
使用代码
页面刷新检测,第一步:
为了将 HTTP-POST 与其他 HTTP-POST 区分开来,我决定坚持注入(或多或少)发送给客户端的每个页面中的唯一 ID。为了实现这一目标,我编写了自己的类,该类继承自 Stream 类,并将其挂接至 Response.Filter。
流类(RefreshDetectionResponseFilter)基本上只需要重写Write-方法。我将整个流写入 StringBuilder 并在生成的 HTML 文本中搜索表单标记。
页面刷新检测,第二步
现在所有页面都包含隐藏字段,我只需要在页面回发后查找隐藏字段的值。为此,我只需连接 HttpModule 的 BeginRequest 事件并在发布的表单中查找隐藏字段。
希望有帮助
Using the code
Page-refresh Detection, Step One:
To differ an HTTP-POST from another one, I decided to stick with the idea of injecting a (more or less) unique ID in every page that gets sent to the client. To achieve this, I wrote my own class that inherits from the Stream class and hooked it to the Response.Filter.
The stream-class (RefreshDetectionResponseFilter) basically just needs to override the Write-method. I write the whole stream to a StringBuilder and search in the resulting HTML-text for the form tag.
Page-refresh Detection, Step Two
Now that all the pages contain the hidden field, I just need to look out for the value of the hidden field, once the page is posted back. To do so, I just hook up to the BeginRequest-event of the HttpModule and look in the posted form for the hidden field.
I hope it helps