IE7问题 - 会话和cookie问题

时间:2009-09-08 10:02:45

标签: internet-explorer-7

我对IE7有一个问题。让我解释一下情景

我已使用常规登录功能在TAB1中的IE7浏览器中打开了基于Web的应用程序。成功登录后,我进入了应用程序主页,我正常处理了Trans1。现在我想在同一个浏览器窗口中的另一个选项卡TAB2中再次打开我的应用程序.. IE7将不允许我在登录页面上登录我的应用程序,它直接进入主页,当我做一个事务时说“Trans2”它很顺利。现在,当我再次访问TAB1并进行一次交易时,它打开了我在TAB2中打开的TAB2页面。

似乎IE7在多个标签中共享相同的会话cookie。是否有相同方案的解决方法。

任何人都有解决此问题的方法。

在这方面表达你的帮助。

谢谢, Manoja Swaro

4 个答案:

答案 0 :(得分:2)

  

似乎IE7在多个标签中共享相同的会话cookie。是否有相同方案的解决方法。

没有。 Cookie是设计在同一浏览器的所有实例之间共享的,无论是在多个选项卡还是多个窗口中。您只能通过使用不同的浏览器来获得两个单独的会话,例如IE的实例和Firefox的一个。

这在IE8中有所改变,但是你可能不想依赖它。见http://blogs.msdn.com/ie/archive/2009/05/06/session-cookies-sessionstorage-and-ie8.aspx

这就是为什么您通常不应该使用cookie /会话来跟踪部分完成的交易;一个交易总是会干扰另一个交易。最好是:

  • 跟踪页面/表单数据中的所有未完成的交易数据,例如隐藏字段
  • 如果这些数据太多而无法来回传递,请为通过页面数据记住的事务创建一个ID,并将实际数据存储在数据库中。

您还可以使用绑定到页面的唯一ID来生成更多唯一的Cookie名称,例如。 'preference.1234 = foo'而不仅仅是'preference = foo',因此每个实例都有自己的cookie。

答案 1 :(得分:0)

是。 IE在标签之间共享会话/ cookie。

尝试运行新的浏览器(即从“开始”菜单) - 它有助于旧版本的IE 它适用于我的IE7。

答案 2 :(得分:0)

AFAIK所有选项卡式浏览器都会出现这种情况(例如FF)。

答案 3 :(得分:0)

实际上,这就是所有标签式浏览器的工作方式。 Cookie在所有标签之间共享。但是,它们不会在同一应用程序的多个实例之间共享,但我怀疑这会对您有所帮助。

对于许多应用来说,这实际上是一个严重的问题。跟踪选项卡非常困难 - 这些选项卡是打开的,关闭时,新选项卡打开时以及现有选项卡发出请求时。

我找到了一个解决方法,但它非常混乱。这个想法是你必须自己为每个标签分配一个唯一的ID。然后,当选项卡执行某些操作时,必须将此ID发回服务器。根据应用程序的体系结构,ID可以在URL或隐藏的表单字段中传递。如果您正在进行AJAX,这可以更容易找到添加ID的常用位置。 ASP.NET在任何时候都只有一个表单,因此隐藏字段很容易做到。

当然,在服务器端,您必须检查此ID并根据它实现自己的“标签会话”。