来自iframe的Access Session变量

时间:2014-08-19 10:01:52

标签: jsp session iframe tomcat7

我有一个jsp,我设置了一个会话变量。

<% session.setAttribute("user", CrossSession.getUser(token)); %>

但是当我尝试在另一个jsp中读取会话变量“user”时 - 它被加载到iframe(相同的主机,服务器等)中 - 然后我得到NullPointerException

<%= session.getAttribute("user").toString() %>

如何在iframe中获取会话变量?

2 个答案:

答案 0 :(得分:0)

当您在<iframe>元素中嵌入html framgment时,您正在严格指示服务器触发新的HTTP请求,因此您将在另一个不会包含您的{的上下文中获得独立响应{1}}对象。 这就是您收到NPE的原因,因为sessionsession

但由于所有 jsp 页面都位于同一服务器中,因此您可以将null对象传递到另一个嵌入的 jsp 但是在使用{{ 1}}指令。

所以不要在iframe中嵌入 jsp ,而是嵌入 jsp ,如下所示:

session

答案 1 :(得分:0)

某些浏览器对于与iframe共享Cookie非常严格,尤其是Safari。绕过这种方法的一种方法是明确地将会话ID作为iframe URL的路径参数传递,因此利用普通servlet容器的“URL重写”支持来进行会话管理(Tomcat默认支持它在框中)。

<iframe src="some.jsp;jsessionid=${pageContext.session.id}" ...>

请注意,我仍然认为您诚实地说iframe是从同一个主机/域提供的。