【问题标题】:Access Session variable from iframe从 iframe 访问 Session 变量
【发布时间】:2014-08-21 03:37:58
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: jsp session iframe tomcat7


    【解决方案1】:

    某些浏览器在与 iframe 共享 cookie 方面非常严格,尤其是 Safari。绕过这一点的一种方法是将会话 ID 作为 iframe URL 的路径参数显式传递,从而利用普通 servlet 容器对会话管理的“URL 重写”支持(Tomcat 默认支持它)。

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

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

    【讨论】:

      【解决方案2】:

      当您在 &lt;iframe&gt; 元素中嵌入 html 片段时,您是在严格指示服务器触发一个新的 HTTP 请求,因此您将在另一个不包含您的 session 对象的上下文中获得独立的响应。 这就是您收到 NPE 的原因,因为 session 是 null。

      但由于您的所有 jsp 页面都在同一服务器中,因此您可以将 session 对象传递给另一个嵌入的 jsp 但使用 &lt;jsp:include /&gt; 指令时.

      因此,与其将 jsp 嵌入到 iframe 中,不如将 jsp 嵌入如下:

      <jsp:include page="page_name.jsp" />
      

      【讨论】:

      • 谢谢!遗憾的是,这对我来说不是一个解决方案,因为我的 iframe 是由 javascript 创建和控制的。
      猜你喜欢
      • 2015-10-24
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多