IWS 是一个桌面应用程序,具有自己的 webBrowser 组件,可在需要时调用 Scripting web-app。脚本位于Tomcat6中。
脚本基本上是一个 JSP 应用程序。(实际上,它是一个引擎,它通过图形界面上的人工操作构建 JSP 应用程序,例如定义流程、按钮、内容等,但我说的是它作为 JSP 生成的“脚本”)
我需要破解脚本,以便它可以在 IWS 应用程序的 webBrowser 组件中共享空间(通过框架)。
IWS 调用 2 次 start.jsp:
第一次,以隐藏方式(可能是来自 IWS 代码的直接 http 查询),没有任何特殊参数。原始 start.jsp 执行 2 302 次(因此调用总共访问 3 个页面)它在 cookie 和参数中都使用 jsesionId 结束(但不是在最后的 302 处)
第二次,使用 jSessionId 和一堆重要参数。它只使用 jSessionId 作为参数。据我在提琴手中看到的,当它正常工作时没有使用 cookie,因为 jsessionId 在它自己的内部
所以我猜第一次只是为了得到一个新的jSessionId。
我现在尝试的解决方案是用一个新的框架页面替换脚本起始页面,在它拥有的两个框架之一中,它加载 Web 应用程序,并在第二个框架中加载另一个应用程序。根据第一帧的数据,它将更新第二帧。
所以像:
我们有 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 时,它看起来比某些人认为的“旧 cookie”正在被使用,而忽略了 URL 中的 jsessionId。WWG00000E 出现一些奇怪的错误:WWGAIL - 错误:未为函数 getInteractionKVPair 提供 ID 详细信息:
这就像它正在返回一个带有另一个 jsessionid 的旧 cookie。每次出现错误时,那个“旧”jsessionid 都是相同的。
用 fiddler 嗅探,我看到第二个 start.jsp 以 URL 中的正确 jsessionId 开头,但它的 cookie 就像来自另一个会话,并且由于发生这种情况,它停止在每次重定向时添加 jsession id。就好像它在一个完全不同的宇宙中执行。这正常吗??????
目前,我试图强制cookie jSessionId 以及链接以使它们包含jSessionId,但无济于事。
请问,你有什么想法吗?
谢谢!
Edited2:如果我放置它没有框架(恢复默认 start.jsp)。在 IWS 仅在第一次工作(交互),而在任何后续的问题开始出现......