我正在使用IBM Lotus Notes技术中的Xpages框架开发Web应用程序。
我的用户不使用嵌入式Notes客户端浏览器,而是使用常规现代浏览器(Firefox,Chrome)浏览Notes应用程序。
当用户有互联网连接时,一切正常,他可以通过他最喜欢的浏览器访问在线服务器上的应用程序。
但是我的一些应用程序需要在本地使用离线。当用户在本地工作时,他打开IBM Notes客户端,转到他的工作区并单击以在本地打开应用程序。然后,Notes客户端在随机端口上运行http服务器,并使用嵌入式Notes客户端浏览器打开该应用程序。
我想要实现的是能够通过使用默认系统浏览器而不是嵌入式Notes客户端浏览器在常规浏览器(Firefox,Chrome)上打开应用程序。
这是我尝试过的没有成功的事情:
使用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
现在我需要传递会话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
但我确信我的身份证是正确的。我试图在网上对此进行调查,但现在没有成功,如果有人知道我错过了什么,我会很高兴的吗?或者也许是另一种在默认系统浏览器中打开本地应用程序的方法?
谢谢!
答案 0 :(得分:1)
简而言之,你不能。安全限制禁用此功能。
但也许您应该再考虑XPiNC应用程序:使用9.0.1,底层的XULRunner组件已经升级,现在支持HTML5和许多新的"特征
它与Firefox 10.0.6匹配,这是HTML5测试结果: https://html5test.com/s/555ae51ca555ac7b.html
答案 1 :(得分:0)
您可以使用的唯一合理操作是在客户端上安装Domino设计器。然后你得到了一个用于标准浏览器的nhttp任务(你可能会分析nhttp需要什么,只安装那个部分)。
警告:本地nhttp不支持身份验证。所以你需要破解它(例如在本地NSF和正确安全的NSF之间来回复制数据)。
备选你可以尝试使用approach I took vert.x(应该可以使用任何Java容器,但是你不会有任何XPage,只有原始的Domino数据。
Danielle用Crossworlds项目推动了这项工作 - 这可能就是你所需要的。
答案 2 :(得分:0)
如果必须使用脱机容量,您是否考虑过创建纯Notes客户端应用程序?那肯定会容易得多。