我有一个简单的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?
答案 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将使用当前使用的协议链接到其他服务器。除此之外,代理可能设置了标题。