使用反向代理获取XPage中的当前URL

时间:2014-10-28 12:16:59

标签: jsf xpages xpages-ssjs

我有一个简单的XPage,我通过反向代理访问它。 我现在的问题是在服务器端获取正确的URL。

context.getUrl().toString()

    XSPContext xspContext = new ServletXSPContextFactory().getXSPContext(FacesContext.getCurrentInstance());
    XSPUrl xspUrl = xspContext.getUrl();
    return xspUrl.toString();

无效。

例如:

浏览器中的网址为https://myip/db.nsf

但是SSJS函数和Java函数只返回http://myip/db.nsf

当我在没有反向代理的情况下尝试此操作时,一切正常。 有没有办法在服务器端获取location.href?

4 个答案:

答案 0 :(得分:0)

您可以使用以下代码手动创建URL:

 var path = facesContext.getExternalContext().getRequest().getContextPath()
 var url = "https://" + path 

这将返回带有https前缀

的nsf文件的路径

答案 1 :(得分:0)

嗯......这可能是一个管理设置:使用互联网站点文档,您还可以创建一个网站规则(类型=替换),以通过传入模式自动计算整个URL。查看IBM Domino管理帮助,了解如何设置站点文档以及网站规则。 目标是使两个URL具有相同的方案,以便XSP计算将动态地生成正确的值。

答案 2 :(得分:0)

我相信你想要的是将$WSIS标题从反向代理设置为Domino到True。与其他WebSphere connector headers非常相似,这应该会导致Domino认为传入协议在所有情况下都是HTTPS。请注意,这也会产生令人遗憾的副作用,导致Domino恢复其每个IP仅使用一个站点文档的行为;如果您一直在利用反向代理来避免此错误,则必须找到另一条路由,例如从代理中查找X-SSL标头。

答案 3 :(得分:0)

除非你想发送到其他地方的链接,否则你不需要协议部分。如果您在同一浏览器上// someserver / somepage将使用当前使用的协议链接到其他服务器。除此之外,代理可能设置了标题。