【发布时间】:2015-02-17 13:56:14
【问题描述】:
我正在使用来自 IBM Lotus Notes 技术的 Xpages 框架开发 Web 应用程序。
我的用户不使用嵌入式 Notes 客户端浏览器,而是使用常规的现代浏览器(Firefox、Chrome)来浏览 Notes 应用程序。
当用户有互联网连接时一切正常,他可以通过他喜欢的浏览器访问在线服务器上的应用程序。
但是我的一些应用程序需要在本地离线使用。当用户在本地工作时,他打开 IBM Notes 客户端,转到他的工作区并单击以在本地打开应用程序。然后,Notes 客户端在随机端口上运行一个 http 服务器,并使用嵌入式 Notes 客户端浏览器打开应用程序。
我想要实现的是能够在常规浏览器(Firefox、Chrome)上打开应用程序,只需使用默认系统浏览器而不是嵌入式 Notes 客户端浏览器。
这是我尝试但没有成功的方法:
通过window.location.href,我获得了本地http 服务器运行的端口以及在嵌入式Notes 客户端浏览器中打开的页面的路径。我得到了这样的结果:
127.0.0.1:54428/xsp/Gfn/CoffeShop.nsf/xp_home.xsp?OpenXPage&&xspRunningContext=Notes
所以我只保留有趣的部分:
127.0.0.1:54428/xsp/Gfn/CoffeShop.nsf/xp_home.xsp
现在我需要传递 session id 有这个 http 请求的参数,以便浏览器有权访问应用程序。我得到以下会话 ID:
facesContext.getExternalContext().getRequest().getSession().getId()
由此我得到一个 ID 并构建完整的 http 请求:
127.0.0.1:54428/xsp/Gfn/CoffeShop.nsf/xp_home.xsp?SessionID=ID-fae7aca8f062023972fe35e5909b0106f44ba2ae
但是当我在常规浏览器中尝试此操作时,我得到的不是页面,而是 错误 500。如果我查看服务器的日志,我会看到以下错误消息:
Exception Thrown
javax.servlet.ServletException: The request is not coming from a trusted Rich Client part
但我确定我的 ID 是正确的。我试图在互联网上对此进行调查,但目前没有成功,如果有人知道我想念什么,我会很高兴?或者在默认系统浏览器中打开本地应用程序的另一种方式?
谢谢!
【问题讨论】:
-
XPiNC 有什么问题? IMO 你破解它的方式是死路一条。您想要的是“本地预览”,不同的 http 任务,但 AFAIK 它仅适用于已安装的 IBM Designer。
-
XPiNC 是 firefox 的旧版本,它不支持我在应用程序中使用的许多新的 Web 技术(例如 HTML5)。它也比较慢。我当然可以调整我的代码以使其在 XPiNC 上很好地工作,但与在本地工作时找到使用常规浏览器的解决方案相比,这将更加令人困惑。用户没有设计器,只有客户端,所以预览对我来说不是一个好的解决方案。
-
我同意,XPiNC 落后了几年。好的应用程序,尤其是那些工作多年的应用程序,不依赖于“花里胡哨”。除非您的目标客户是青少年;-) 我的 2 美分。当然 - 设计师不是一个选项 - 我认为你不能将它用于此目的,不切实际并且违反许可证。
标签: xpages lotus-notes lotus-domino xpages-ssjs