【问题标题】:How to make use java session when client is opened in Internet Explorer in iframe?在 iframe 的 Internet Explorer 中打开客户端时如何使用 java 会话?
【发布时间】:2015-09-23 11:00:09
【问题描述】:

当它在 iframe 中的 Internet Explorer 中打开时,cookie JSESSIONID 在任何请求期间都不会发送到服务器。因此没有使用服务器会话。我发现article 说 IE 只是阻止任何 cookie iframe 内的页面。这就是为什么JSESSIONID cookie 不会发送到服务器的原因。 那么如何让 IE iframe 中的 java session 可以继续使用呢?

我使用 jsf 并得到 View myview.xhtml 无法恢复的异常。 javax.faces.application.ViewExpiredException.

正好在服务器端我可以访问

request.getCookies()

发现没有名称为JSESSIONID的cookie。

因此会话未分配给服务器上的请求。

另外在网络选项卡上查看 IE 中的开发工具,我看到真正的响应有 Set-Cookie JSESSIONID=...,而后来的请求没有 Cookie JSESSIONID=...

【问题讨论】:

  • 请出示您的代码。
  • 首先,为什么要使用框架?为什么不只是包括?它来自同一台服务器,因此不是外部或非 HTML 资源,对吧?

标签: internet-explorer jsf iframe


【解决方案1】:

正如你指出的文章所说,你需要在你的页面中提供一个紧凑的隐私政策,这样被 IE 视为 3rd 方的 cookie 是可以接受的。

对于您的网络平台,我认为是 JSP,您可以包含以下行:

response.addHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"")

【讨论】:

  • 真的,它有帮助。标题值 "CP=\"any text\"" 内的任何文本都是可接受的。我将它与 jsf 一起使用,并在添加此类标头会话 cookie 后从 IE 中的 iframe 发送。
猜你喜欢
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 1970-01-01
  • 2016-09-24
  • 2022-07-28
相关资源
最近更新 更多