Internet explorer 8 open()清除会话

Internet explorer 8 open()清除会话,internet-explorer-8,session-state,portlet,sessionid,Internet Explorer 8,Session State,Portlet,Sessionid,我的应用程序中有几个portlet。如果我使用window.open()方法打开url,会话id将更改,并在其他portlet中导致错误。如果我不打开这个url,一切正常。但是一旦这个新窗口打开,会话就会被清除,其余的portlet就会抛出一个异常,因为缺少一些值。 在浏览器的地址栏中,我输入了javascript:alert(document.cookie);查看JSESSIONID。它在整个页面中保持不变,当我在新窗口中单击启动新url的链接时会发生变化。我用了IE8 任何关于在IE中维护会

我的应用程序中有几个portlet。如果我使用window.open()方法打开url,会话id将更改,并在其他portlet中导致错误。如果我不打开这个url,一切正常。但是一旦这个新窗口打开,会话就会被清除,其余的portlet就会抛出一个异常,因为缺少一些值。 在浏览器的地址栏中,我输入了javascript:alert(document.cookie);查看JSESSIONID。它在整个页面中保持不变,当我在新窗口中单击启动新url的链接时会发生变化。我用了IE8


任何关于在IE中维护会话状态的建议都将不胜感激。

您将向window.open()传递什么URL?让IE8在弹出窗口中维护JSESSIONID的一个简单方法是在portlet标记中的window.open()调用中使用相对URL。关键的是域名保持完全相同。以下是onclick事件中带有window.open()的按钮示例:

<button onclick="javascript:window.open('/wps/portal')">Home Page</button>
主页
我使用的是WebSpherePortal,所以“/wps/Portal”只是指向主页的链接

另外,您希望弹出窗口的目标是什么?具有相同会话的不同门户页面

更新:假定window.open()的目标是托管在同一域上的独立web应用程序…


门户服务器和承载web应用程序的应用程序服务器具有独立的会话,但默认情况下它们都使用名为JSESSIONID的cookie。您第一次访问web应用程序时,应用程序服务器会覆盖门户的cookie,从而导致对门户的每个后续请求都具有错误的会话id。当我遇到这种情况时,我的解决方案是将门户配置为将其会话cookie命名为其他名称(例如PORTALSESSIONID)因此,这两者并不冲突。

感谢您的回复。。。我将完整的url作为参数传递给open()方法,但域名与父方法的域名完全相同。我也会试试你的建议。目标不是门户页面,而是托管在同一域下的不同web应用程序,例如,如果主域是example.com,我打开example.com/app/index.jspI,我认为可能与JSSessionID cookie存在命名冲突。我已经用一些额外的细节更新了这个答案。