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

Jsf 使用反向代理获取XPages中的当前URL,jsf,xpages,xpages-ssjs,Jsf,Xpages,Xpages Ssjs,我有一个简单的XPage,我通过反向代理访问它。 我现在的问题是在服务器端获取正确的URL context.getUrl().toString() 及 工作不正常 例如: 浏览器中的URL为https://myip/db.nsf 但是SSJS函数和Java函数只返回http://myip/db.nsf 当我在没有反向代理的情况下尝试此操作时,一切正常。 有没有办法在服务器端获取location.href?您可以使用以下代码手动创建URL: var path = facesContext.ge

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

context.getUrl().toString()

工作不正常

例如:

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

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

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

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

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

这将返回带有https前缀的nsf文件路径。。。这可能是一种管理设置:对于internet站点文档,您可以另外创建一个网站规则(type=substitution),以根据传入模式自动计算整个URL。查看IBMDomino管理帮助,了解如何设置站点文档和网站规则。
目标是使两个URL具有相同的方案,以便XSP计算将动态生成正确的值。

我相信您想要的是将反向代理到Domino的
$WSIS
头设置为
True
。与其他协议非常相似,这会使Domino认为传入协议在所有情况下都是HTTPS。请注意,这还有一个不幸的副作用,即导致Domino恢复到每个IP只使用一个站点文档的行为;如果您一直在利用反向代理来避免此错误,则必须找到其他路由,例如从代理中查找
X-SSL
头。

除非您希望发送到其他位置的链接,否则不需要协议部分。如果您在同一浏览器上//someserver/somepage将使用当前使用的协议链接到不同的服务器。除此之外,代理可能会设置一个头

问题是,url并不总是带有https。因此,手动设置它对我来说不是一个解决方案。facesContext.getExternalContext().getRequest().getRequestURL()将返回xsp部件中的完整url。如果你剪掉最后一个斜杠的右边部分(包括斜杠),你得到的URL是正确的,但是我必须手动添加https和域,这对我来说不起作用,因为protocoll和域是不固定的。我需要像location.href一样从bowser动态获取它如果在代码中使用facesContext.getExternalContext().getRequest().getRequestURL(),会得到什么?是的,我认为这也是一个管理问题。但这是一个非常大和复杂的环境,我希望得到一个解决方案,我可以使用没有任何管理变化。我不能保证有一种方法可以从浏览器中获取值,我的意思是不解析它就可以从客户端js加载到会话范围变量。对不起。我是瞎的。是的,我只需要使用相对路径,一切都很好。
 var path = facesContext.getExternalContext().getRequest().getContextPath()
 var url = "https://" + path