对于cookie,我们一般认为有这样的特性:
设置了cookie的值而不设置有效期时,页面存在期间都是有效的,包括从本页面新打开的页面中均可以使用(同一个服务器),一旦页面关闭,cookie自动清除。实践过程中,我发现,如果直接用IE浏览器打开页面(用户大多直接使用IE浏览器),上述推论成立,但用户如果不直接使用IE浏览器,而是使用"我的电脑"或者"资源管理器",在地址栏里面输入网址,此时,cookie的这些特性失灵了,为此,我们做如下实验:
打开VS2008,新建一个网站,默认已经有一个网页了,名称为default.aspx,我们再添加一个webform,使用默认的名称:default2.aspx
在页面1上,添加一个超级链接,两个html按钮,分别用于打开新页面(也就是default2.aspx)、显示cookie、设置cookie,写cookie的函数如下:
 function WriteCookie  (key, value, cookieDomain, cookiePath, expireTime, targetWindow) 
        { 
            value = '' + value; 
            var strAppendix = ""; 
            strAppendix += cookieDomain ? ";domain=" + cookieDomain : ""; 
            strAppendix += cookiePath ? ";path=" + cookiePath : ""; 
            strAppendix += expireTime ? ";expires=" + expireTime : ""; 
            targetWindow = targetWindow ? targetWindow : top; 
            document.cookie = escape(key) + "=" + escape(value) + strAppendix; 
        }超级链接为:<a href="Default2.aspx" target="_blank" id="lkPage2">link to new page </a> 注意,在新窗口中打开,也就是target="_blank"
按钮1显示cookie:
  function btnShowCookie_onclick()
        {
            alert(document.cookie); 
        }
按钮2设置cookie:
        function btnSetCookie_onclick()
        {
            WriteCookie("test", "testvalue");
        }页面2的功能很简单,在页面载入时,显示一下cookie就可以了:
window.onload = function() 
        { 
            alert(document.cookie); 
        } 准备完毕,我们运行网站,默认会用IE启动default.aspx,在地址栏里面复制web地址到剪贴板,然后把所有窗口都最小化,开始测试测试一:
    从桌面上打开IE浏览器,粘贴好地址,并回车,显示出default.aspx,点超级链接或点按钮1,都显示没有cookie,点一下按钮2进行cookie设置,再点超级链接或按钮1,显示cookie正常了.
    关闭IE,再重新打开一个IE,同样设置好地址,点一下按钮1,显示没有cookie,说明cookie在刚才关闭浏览器时,的确清空了.
从上面的测试中发现,一切都和书上介绍的一样.测试2:
    打开"我的电脑"(不是IE图标!),在地址栏里面粘贴好地址并回车,将打开"default.aspx",同样,点超级连接或按钮1,均无cookie,这是意料之中的.
点按钮2来设置cookie,然后点按钮1,cookie显示出来了,说明设置成功,再点超级链接,提示无cookie说明cookie没有传递给新页面!
    关闭该浏览器(就是我的电脑),重新打开一个"我的电脑",在地址栏里面粘贴好地址并回车,default.aspx显示出来后,点一下按钮1,发现cookie还在,说明cookie并没有被清空,同样,点超级链接,新页面当然也没有cookie,换句话说,通过"我的电脑"打开页面后,cookie不会传到新页面,关闭时也不会清空!我的个人分析(不一定正确):"我的电脑"是windows图形界面的一部分,"IE"是另外一个软件(资源浏览器的可执行文件为:windows\explorer.exe,而IE的执行文件为:Program Files\Internet Explorer\iexplore.exe),是两个软件,因此,当我们点超级链接时,"我的电脑"打开一个新的IE窗口,并在其中显示新页面,因为是两个软件(主页面是我的电脑,新页面是IE),因此cookie无法共享,关闭"我的电脑"时,因为整个图形界面并没有关闭(除非重新启动计算机),因此,cookie不会清空.//======================================================================================
    现在我的问题时,如何让用户使用"我的电脑"打开页面后,效果与直接用IE打开的效果一样?
//======================================================================================大家可以到http://61.153.65.30/testcookie/进行测试,就两个页面,查看源代码就可以复制下来在本地测试了.

解决方案 »

  1.   

    Sorry\我错了!  刚刚又试了一下!
      

  2.   

    通过"我的电脑"打开主页面,点超级连接打开新页面,仔细观察一下,你会发现两个窗口虽然都是IE的样子,但还是有很大区别,主页面(用我的电脑打开的)标题是web地址,而新页面是title里面的内容+microsoft internet explorer,而且,工具条的按钮也不一样,说明的确是两个软件!
      

  3.   

    写这个题目时,我担心有人说标题党,现在要真正期待高手回答了,不知你们的web是否有类似问题,可以测试一下了,呵呵