【问题标题】:Persistent cookies on classic ASP global.asa经典 ASP global.asa 上的持久 cookie
【发布时间】:2021-09-29 12:13:09
【问题描述】:

我想知道即使用户关闭浏览器,您是否可以帮助我处理持久性 cookie。

我在 IIS 和 asp 上运行网络,会话工作正常,但每次用户关闭浏览器时,会话都会丢失,因此购物车也会丢失。

我认为这可能与 global.asa 文件有关? (我在 global.asax 上看到了有关持久性 cookie 的答案,但我的网站使用的是 global.asa)

这是我当前的 global.asa 文件,有什么想法吗?

Sub Application_OnStart
  Application("ActiveUsers") = 0
End Sub

Sub Session_OnStart
  Session.Timeout = 600
  Session("Start") = Now
  Application.Lock
  Application("ActiveUsers") = Application("ActiveUsers") + 1
  Application.UnLock
End Sub

Sub Session_OnEnd
 Application.Lock
 Application("ActiveUsers") = Application("ActiveUsers") - 1
 Application.UnLock
End Sub
</script>   

非常感谢!

【问题讨论】:

标签: iis cookies vbscript asp-classic global.asa


【解决方案1】:

据我所知,如果您没有为它设置长时间的超时,当您关闭浏览器时,cookie 将不存在。因此,即使会话仍然存在于服务器中,会话 id 也会丢失(超过超时值时会过期)。

因此,对于您的情况,您应该为 cookie 超时设置较长的时间,但不要像代码所示那样设置会话超时。您可以将页面上的 cookie 超时值设置为提到的duplicate question

<script>
void function session_cookie_change() {
    var s,a;
    s=document.cookie.split(/\=/);            
    a=s[0];            
    var dtExpires = new Date();                
    dtExpires.setFullYear(1970,1,1);            
    a += ';
    // The expires parameter of the cookie 
    // is set to the previous date 
    expires=' + dtExpires.toGMTString();            
    a += '; path=/';             
    document.cookie=a;
}
</script>
<body onload='session_cookie_change()'>

除此之外,您还需要注意会话 id。虽然关闭浏览器时cookie不会被删除,但当您重新打开浏览器连接到服务器时,它会使用另一个会话ID。所以你可能还需要在chrome地址中输入chrome://flags,搜索samesite,然后禁用。

【讨论】:

  • This 几乎涵盖了它。
  • @user692942 是的,所以我在回答中提到“如 cmets show 中提到的文件”,并提供我的建议(在底部)注意不同的会话 id。
  • 当它明显是重复的问题时,只是不明白回答的意义,只是标记并继续。
猜你喜欢
  • 1970-01-01
  • 2010-11-28
  • 2015-09-01
  • 2010-10-02
  • 2016-04-15
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多