none
explorer进程打开页面无法清除Cookie的问题 RRS feed

  • 问题

  • 现象:IE6下通过"我的电脑"选择"收藏夹"中的链接进入页面,SessionID每次都一样,Cookie无法清除(使用Request.Cookies.Clear()和Response.Cookies.Clear()方法)。应该和explorer进程为常驻进程,IE6又是根据线程去维护Session有关。IE7下正常,应该是IE7内核分线程的原因。如果explorer.exe进程终止,再重新调用第一次正常,第二次开始又无法删除Cookie。

    问题:
    1.求教explorer打开时Cookie清除方法。
    2.求证有没有微软官方的说法,因为现在需要向客户报告。
    2009年4月16日 9:36

答案

  • 不能直接删除用户计算机中的 Cookie。但是,可以通过将 Cookie 的到期日期设置为过去的日期,让用户的浏览器来删除 Cookie。当用户下一次向设置该 Cookie 的域或路径内的页发出请求时,浏览器将确定该 Cookie 已到期并将其移除。


    调用 Cookies 集合的 Remove 方法可从服务器端的集合中移除 Cookie,使 Cookie 不会被发送至客户端。但是,如果客户端已存在 Cookie,则该方法无法从客户端将其移除。

    在服务器端的清除不会影响到客户端

    myCookie.Expires = DateTime.Now.AddDays(-1d);


    孟宪会
    2009年4月18日 23:32
    版主

全部回复

  • 现象:IE6下通过"我的电脑"选择"收藏夹"中的链接进入页面,SessionID每次都一样,Cookie无法清除(使用Request.Cookies.Clear()和Response.Cookies.Clear()方法)。应该和explorer进程为常驻进程,IE6又是根据线程去维护Session有关。IE7下正常,应该是IE7内核分线程的原因。如果explorer.exe进程终止,再重新调用第一次正常,第二次开始又无法删除Cookie。

    问题:
    1.求教explorer打开时Cookie清除方法。
    2.求证有没有微软官方的说法,因为现在需要向客户报告。
    2009年4月16日 9:38
  • >IE6又是根据线程去维护Session有关

    其实  ie6是按照进程分的   你看任务管理中  一个 Iexplorer.exe 就是一个 session组



    当你
    在explorer.exe 中使用内置收藏夹的时候   系统直接调用了 shdocvw.dll 来显示
    由于 shdocvw.dll是进程内组件  所以从 Explorer收藏夹 打开的的网站    并不开新的Iexploer 进程 而是把窗口改造成了一个浏览器的样子

    所以只有你在彻底关闭 explorer以后  对应的session 才会消失
    以上是ie 4 开始集成explorer后 一直存在的问题 而且也完全如你所说  在ie7进程横完全独立后才解决

    可能你在你的服务器页面设置  如果referer 满足某些条件的话(不为空而且来自本地某个地址  比如files://) 则session 马上过期  能解决这一问题
    工作突然有点忙 嘿嘿
    2009年4月17日 3:04
  • 应该是 IE 与资源管理器共用一个进程了吧?
    检查一下注册表中的设置:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\BrowseNewProcess
    如果键“BrowseNewProcess”的值为“no”,请改为“yes”。
    最好也检查一下 HKEY_CURRENT_USER 下的设置。
    2009年4月17日 3:15
  • UrlReferer获取不到任何信息。
    2009年4月18日 10:49
  • 我的计算机设置的值确实为yes但是没有效果。

    我使用的是IE6,如有进一步的信息请指教。
    2009年4月18日 10:50
  • 不能直接删除用户计算机中的 Cookie。但是,可以通过将 Cookie 的到期日期设置为过去的日期,让用户的浏览器来删除 Cookie。当用户下一次向设置该 Cookie 的域或路径内的页发出请求时,浏览器将确定该 Cookie 已到期并将其移除。


    调用 Cookies 集合的 Remove 方法可从服务器端的集合中移除 Cookie,使 Cookie 不会被发送至客户端。但是,如果客户端已存在 Cookie,则该方法无法从客户端将其移除。

    在服务器端的清除不会影响到客户端

    myCookie.Expires = DateTime.Now.AddDays(-1d);


    孟宪会
    2009年4月18日 23:32
    版主