在IE和Safari中重定向后,JSF会话丢失了

时间:2015-05-07 15:54:19

标签: internet-explorer jsf session iframe safari

我目前正在努力解决一个奇怪的问题。我有一个在Glassfish 3上运行的基于Java的应用程序。此页面嵌入在具有iFrame的另一个页面上。当我直接从任何浏览器调用页面时,一切正常。当我使用任何版本的Internet ExplorerSafari调用嵌入了iFrame的网页时,我会遇到会话问题。

调用的第一个页面有一个SessionScoped Backing Bean,其中包含一些URL-GET参数(如?id=12&code=1)附带的信息。检查idcode后,Backing Bean会将客户端重定向到另一个页面:

ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
context.redirect(context.getRequestContextPath() + "/a.xhtml?faces-redirect=true");

以下页面有另一个SessionScoped Backing Bean,访问第一页的Backing Bean。已设置的所有值现在都是NULL

我检查了对页面的请求。在ChromeFirefox中,第一个请求的响应包含JSESSIONID,浏览器会在所有其他调用中使用该响应。 SafariInternet Explorer也在接收JSESSIONID,但不会将其用于下一个请求,因此服务器会创建一个新请求。

我的web.xml定义了session-config,如下所示:

<session-config>
   <session-timeout>
      30
   </session-timeout>
</session-config>

0 个答案:

没有答案