WAF环境中的PrimeFaces,内部和外部URL

问题描述

假设我们有一个内部URL https://my.internal.url(在我们的示例中为Liferay Portal),而从Web应用程序防火墙中有一个指向该内部URL的外部URL https://my.external.url

互联网用户正在使用外部URL。

PrimeFaces扩展了属性,例如

onclick="...;window.open('https://my.interal.url'..."

这会导致CORS问题。

由于内部URL是内部的,因此HTTP标头Access-Control-Allow-Origin不可选项。

我们将与WAF人员讨论URL替换,但是我想知道是否可以告诉PrimeFaces使用外部URL(或者在可能的情况下使用相对URL)。

门户网站不知道外部URL,但是我们当然可以将其实现为配置选项。

(观看源代码,在jsf / PrimeFaces portlet之外还会出现内部URL,因此我也添加了liferay标记

更新

问题已经过时,WAF必须正确处理此问题(旧的SSL环境可以做到,新的WAF环境不能解决

解决方法

你说

门户网站不知道外部URL

但是,任何配置正确的反向代理(或WAF)都应转发用于请求当前页面的实际主机名。

在Apache httpd的mod_proxy_http上,这是通过选项ProxyPreserveHost On完成的。使用AJP转发时,将自动转发主机。其他WAF /代理配置-当然-有所不同。但是,生成URL的正确方法是让生成服务器知道应生成的URL。

如果您需要担心正确的主机名,则需要通过请求来解决:Liferay能够很好地使用虚拟主机名来区分不同的站点-如果它们完全不同,则可能是登录其中一个,但不登录另一个。这对权限产生了影响。

让基础架构为您处理它。不要为此编写代码(或应用程序配置)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...