什么决定了嵌入IE的应用程序中会话cookie的生命周期?

时间:2013-06-13 00:28:34

标签: internet-explorer winapi activex wininet

在嵌入IE WebBrowser控件的应用程序中,什么决定了会话cookie的生命周期?似乎在大多数情况下,会话cookie一直存在,直到进程终止,但有时当其中一个具有WebBrowser控件的窗口关闭而其他此类窗口保持打开时,cookie将被终止。注册表中是否有相关设置?

2 个答案:

答案 0 :(得分:1)

Web服务器。它为cookie提供expiration date

可以选择省略该日期。然后它变成会话cookie ,在浏览器关闭时自动删除。在嵌入式浏览器的情况下,当窗口关闭时。如果您丢弃控件,可能会更早。

答案 1 :(得分:0)

您是否始终至少有一个Web浏览器控件存活?如果是这样,您描述的行为就是一个错误。什么是IE版本,并且都安装了所有更新?

会话cookie意味着在进程的整个生命周期中存在,但维护它的方式取决于全局计数器随着WebOC实例的打开和递减而递增,因为这些WebOC被销毁。您可以使用JavaScript中的ClearAuthenticationCache ExecCommand(或通过本机代码中的等效InternetSetOption)将计数器强制为零,但是无法人为地“递增”计数器。

回到IE8的时间框架中,计数器中存在已知错误,但据我所知,所有这些都已经修复。如果您确实发现自己需要保留会话cookie,则可以使用本机代码定期检查cookie是否存在(使用InternetGetCookie),如果找不到,请通过调用InternetSetCookie重新创建cookie。