'Framed' tomcat6 丢失会话
'Framed' tomcat6 losing sessions
IWS 是一个桌面应用程序,它有自己的 webBrowser 组件,可以在需要时调用 Scripting web-app。脚本位于 Tomcat6.
脚本基本上是一个 JSP 应用程序。 (实际上,它是一个引擎,通过图形界面根据人类操作构建 JSP 应用程序,例如定义流程、按钮、内容等,但我说的是它生成的 "Script" 作为 JSP)
我需要破解脚本,以便它可以在 IWS 应用程序的 webBrowser 组件中共享 space(通过框架)。
IWS 调用 2 次 start.jsp:
第一次,以隐藏的方式(可能是来自 IWS 代码的直接 http 查询),没有任何特殊参数。原来的 start.jsp 做 2 302(所以调用总共访问了 3 页)它在 cookie 和参数中使用 jsesionId 结束(但不是在最后 302)
第二次,有了jSessionId和一堆重要的参数。它仅使用 jSessionId 作为参数。据我在 fiddler 中看到的那样,当它正常工作时不使用 cookie,因为 jsessionId 在它自己的内部
所以我猜第一次只是为了获取一个新的 jSessionId。
我现在尝试的解决方案是用一个新的框架页面替换脚本起始页面,在它包含的两个框架之一中,它加载网络应用程序,并在第二个框架中加载另一个应用程序。根据第一帧的数据,它将更新第二帧。
所以类似于:
我们有start.jsp...(真的叫法不一样)
我们以:
结尾
start.app.jsp(原来是start.jsp,只是改名)
start.jsp(新的包括 html 包裹了之前的 start.jsp)
新的 start.jsp 使用自己的 url,将 start.jsp 更改为 start.app.jsp,以在 iframe 中调用真正的脚本应用程序。
但是我一直被类似的会话问题所困扰。我不是 tomcat 方面的专家。我了解到它使用 cookie 或参数控制会话。我认为它配置为与 URL sessionId 一起使用,但我不太确定。我已设置 META-INF/settings.xml 以禁用会话中的 cookie 使用,但它仍会在 cookie 列表中显示该 cookie。
我的问题是,在第二次调用 start.jsp 时,似乎使用了 "old cookie",忽略了 URL 中的 jsessionId。 WWG00000E 出现一些奇怪的错误:WWGAIL - 错误:没有为函数 getInteractionKVPair 详细信息提供 ID:
这就像是用另一个 jsessionid 返回到一个旧的 cookie。每次出现错误时 'old' jsessionid 都是相同的。
用 fiddler 嗅探,我看到第二个 start.jsp 以 URL 中正确的 jsessionId 开始,但它的 cookie 就像来自另一个会话,它停止到因为发生这种情况,所以在每次重定向时添加 jsession id。就像是在一个完全不同的宇宙中执行。这正常吗?????
目前,我正在尝试强制使用 cookie jSessionId 以及链接以使其包含 jSessionId,但无济于事。
拜托,你有什么想法吗?
谢谢!
Edited2:如果我不带框架放置它(恢复默认 start.jsp)。在 IWS 仅第一次工作(交互),而在任何后续的问题开始出现...
好的,终于解决了...
至少这个版本 Tomcat:
- 调用不带 jSessionId 的 jsp 会在您的应用程序 cookie 中创建一个新的 jSessionId。
- 任何进一步的时间 html 请求将使用 cookie jSessionId 而不是 URL 上的 cookie,因此您将失去任何类型的多会话支持。
它比在 webBrowser 组件中有一些特别之处,进行两步连接,第一个请求从来没有关联的 cookie,所以它工作正常,给你一个带有新 jSessionId 的 cookie,然后你可以做一个新的、无 cookie 的第二个请求,它使用 URL 的 jSessionId 并且没有 cookie 或有 "a default" cookie 而没有 jSessionId。如前所述,当此 webBrowser 请求 jsp 页面时 URL 中没有 jSessionId,问题就开始了,因此如果第一个请求包含非 jSessionIded 调用,Tomcat 会为您提供一个 jSessionId在您的 "default app cookie" 上设置,因此第二个请求会忽略任何 URL jSessionId 以使用该 cookie 上的那个。
在网络浏览器中,我观察到至少在 firefox 中,清除 cookie 不足以消除这种情况 "default cookie"。但也许它可能是经典 "It takes too long so you think it is clean but really it is not"。不确定。
我知道这听起来很混乱。我没有时间对此做进一步测试。
据我所知,当它工作正常时,它就像使用 "session cookie"(没有 jSessionId)一样工作,而当它不起作用时它需要 "default cookie"(使用 jSessionId)并开始忽略 URL jSessionId。
我已经向 Tomcat 的开发邮件列表发送了一封电子邮件。 (有人说正确的位置是用户邮件列表...但你在这里 ;-) )
IWS 是一个桌面应用程序,它有自己的 webBrowser 组件,可以在需要时调用 Scripting web-app。脚本位于 Tomcat6.
脚本基本上是一个 JSP 应用程序。 (实际上,它是一个引擎,通过图形界面根据人类操作构建 JSP 应用程序,例如定义流程、按钮、内容等,但我说的是它生成的 "Script" 作为 JSP)
我需要破解脚本,以便它可以在 IWS 应用程序的 webBrowser 组件中共享 space(通过框架)。
IWS 调用 2 次 start.jsp:
第一次,以隐藏的方式(可能是来自 IWS 代码的直接 http 查询),没有任何特殊参数。原来的 start.jsp 做 2 302(所以调用总共访问了 3 页)它在 cookie 和参数中使用 jsesionId 结束(但不是在最后 302)
第二次,有了jSessionId和一堆重要的参数。它仅使用 jSessionId 作为参数。据我在 fiddler 中看到的那样,当它正常工作时不使用 cookie,因为 jsessionId 在它自己的内部
所以我猜第一次只是为了获取一个新的 jSessionId。
我现在尝试的解决方案是用一个新的框架页面替换脚本起始页面,在它包含的两个框架之一中,它加载网络应用程序,并在第二个框架中加载另一个应用程序。根据第一帧的数据,它将更新第二帧。
所以类似于:
我们有start.jsp...(真的叫法不一样)
我们以:
结尾start.app.jsp(原来是start.jsp,只是改名)
start.jsp(新的包括 html 包裹了之前的 start.jsp)
新的 start.jsp 使用自己的 url,将 start.jsp 更改为 start.app.jsp,以在 iframe 中调用真正的脚本应用程序。
但是我一直被类似的会话问题所困扰。我不是 tomcat 方面的专家。我了解到它使用 cookie 或参数控制会话。我认为它配置为与 URL sessionId 一起使用,但我不太确定。我已设置 META-INF/settings.xml 以禁用会话中的 cookie 使用,但它仍会在 cookie 列表中显示该 cookie。
我的问题是,在第二次调用 start.jsp 时,似乎使用了 "old cookie",忽略了 URL 中的 jsessionId。 WWG00000E 出现一些奇怪的错误:WWGAIL - 错误:没有为函数 getInteractionKVPair 详细信息提供 ID:
这就像是用另一个 jsessionid 返回到一个旧的 cookie。每次出现错误时 'old' jsessionid 都是相同的。
用 fiddler 嗅探,我看到第二个 start.jsp 以 URL 中正确的 jsessionId 开始,但它的 cookie 就像来自另一个会话,它停止到因为发生这种情况,所以在每次重定向时添加 jsession id。就像是在一个完全不同的宇宙中执行。这正常吗?????
目前,我正在尝试强制使用 cookie jSessionId 以及链接以使其包含 jSessionId,但无济于事。
拜托,你有什么想法吗?
谢谢!
Edited2:如果我不带框架放置它(恢复默认 start.jsp)。在 IWS 仅第一次工作(交互),而在任何后续的问题开始出现...
好的,终于解决了...
至少这个版本 Tomcat:
- 调用不带 jSessionId 的 jsp 会在您的应用程序 cookie 中创建一个新的 jSessionId。
- 任何进一步的时间 html 请求将使用 cookie jSessionId 而不是 URL 上的 cookie,因此您将失去任何类型的多会话支持。
它比在 webBrowser 组件中有一些特别之处,进行两步连接,第一个请求从来没有关联的 cookie,所以它工作正常,给你一个带有新 jSessionId 的 cookie,然后你可以做一个新的、无 cookie 的第二个请求,它使用 URL 的 jSessionId 并且没有 cookie 或有 "a default" cookie 而没有 jSessionId。如前所述,当此 webBrowser 请求 jsp 页面时 URL 中没有 jSessionId,问题就开始了,因此如果第一个请求包含非 jSessionIded 调用,Tomcat 会为您提供一个 jSessionId在您的 "default app cookie" 上设置,因此第二个请求会忽略任何 URL jSessionId 以使用该 cookie 上的那个。
在网络浏览器中,我观察到至少在 firefox 中,清除 cookie 不足以消除这种情况 "default cookie"。但也许它可能是经典 "It takes too long so you think it is clean but really it is not"。不确定。
我知道这听起来很混乱。我没有时间对此做进一步测试。
据我所知,当它工作正常时,它就像使用 "session cookie"(没有 jSessionId)一样工作,而当它不起作用时它需要 "default cookie"(使用 jSessionId)并开始忽略 URL jSessionId。
我已经向 Tomcat 的开发邮件列表发送了一封电子邮件。 (有人说正确的位置是用户邮件列表...但你在这里 ;-) )