假设我们有一个内部的https://my.internal.url (在我们的例子中是一个Liferay ),并且来自一个web应用程序防火墙,一个指向这个内部https://my.external.url的外部https://my.external.url。
互联网用户正在使用外部URL。
PrimeFaces扩展了一些属性,例如
onclick="...;window.open('https://my.interal.url'..."这就导致了CORS问题。
header Access-Control-Allow-Origin不是一个选项,因为内部URL是内部的。
我们将与WAF人员讨论网址替换的问题,但我想知道我们是否可以告诉PrimeFaces使用外部URL (或者可能是相对URL,以防这样做)。
门户不知道外部URL,但我们当然可以将其作为配置选项来实现。
(查看源代码,jsf/PrimeFaces外部有更多的内部URL出现,因此我也添加了救生筏标记)
更新
这个问题已经过时了,WAF必须正确地处理这个问题(以前的SSL环境是这样做的,而新的WAF环境没有)
发布于 2020-11-04 08:17:01
你说
门户不知道外部网址
但是,任何正确配置的反向代理(或WAF)都应该转发用于请求当前页面的实际主机名。
在Apache的mod_proxy_http上,这是通过选项ProxyPreserveHost On完成的。使用AJP转发时,主机将自动转发。其他WAF/代理配置当然也不同。但是生成URL的正确方法是让生成服务器知道它应该生成什么URL。
如果您需要担心正确的主机名,则需要通过请求来做到这一点: Liferay能够很好地使用虚拟主机名来区分不同的站点--如果它们完全不同,您可能会被注册到其中一个站点,而不是另一个站点。这对权限产生了影响。
让基础设施帮你处理。不要为它编写代码(或应用程序配置)。
https://stackoverflow.com/questions/64667910
复制相似问题