我正在使用HttpWebRequest登录网站并获取会话cookie。我的应用程序刮擦某些页面,最终变为空闲,导致会话死亡。
什么是防止这种情况的良好方法 - 只是好奇 - 网络浏览器如何做到这一点?
答案 0 :(得分:3)
浏览器本身根本不会这样做。他们只有在Web App本身支持它的情况下才会这样做。例如,可能有一些javascript每隔30秒左右发出一次AJAX请求,向服务器发送一个“keep-session-alive”类型的请求,然后它会更新其状态信息以反映“最近的活动” “现在,因此阻止会话超时。
在上面的示例中,“客户端”即浏览器中的html / javascript和“服务器”将一起编写,因此内置了此类功能。
如果您不负责服务器端应用程序,因此无法自行构建“保持活动”功能,那么您最好的选择是实际访问网页,查看所有的javascript都试图找到可能的“keep-alive”代码(在他们可能正在使用的任何js框架中查找SetTimeout,SetInterval或相关方法)。当然可能没有任何此类功能,在这种情况下,最好的选择是简单地“刷新”您所在的页面(即再次发送相同的请求)
答案 1 :(得分:1)
您无法阻止它,除非您通过以固定的时间间隔(例如每10-15分钟)请求相关网站的特定资源来保持会话处于活动状态。
答案 2 :(得分:0)
<强>客户端:强> 每隔x分钟调用一次服务器,确保它不常用。最好是在会话超时值之下:
(Javscript / Jquery)
$(function() {
setInterval(function() { $.post("/KeepSessionAlive.ashx", null, null); }, 60000 );
});
服务器侧强> 在服务器上的KeepSessionAlive文件中,您可以向会话写一些内容,fe:
context.Session["KeepSessionAlive"] = DateTime.Now;