Liferay 会话扩展 (/c/portal/extend_session) - HTTP 403 禁止访问

Liferay Session extend (/c/portal/extend_session) - HTTP 403 Forbidden

每当调用 /c/portal/expire_session/c/portal/extend_session(以及其他一些)时,我都会遇到 403 禁止的异常。即使没有用户登录,这种情况也会经常发生(因为来宾用户也保留会话)。

我故意关闭了 Liferay 中的自动会话扩展(session.timeout.auto.extend=falsesession.timeout.redirect.on.expire=true)。

我正在使用与 Tomcat 8.5 捆绑在一起的 Liferay 6.2 CE GA5。它或多或少是一个简单的设置(没有额外的过滤器,只有一些自定义的 portlet 和挂钩)。

MS Edge 开发者控制台:

HTTP403: FORBIDDEN - The server understood the request, but is refusing to fulfill it. (XHR)POST - https://xxxxx:8443/c/portal/expire_session

Tomcat 访问日志:

[21/Nov/2018:09:23:54 +0100] "POST /c/portal/expire_session HTTP/1.1" 403 -

Tomcat 连接器:

                <Connector
                    URIEncoding="UTF-8"
                    connectionTimeout="20000"
                    maxPostSize="20971520"
                    port="8443"
                    protocol="HTTP/1.1"
                    scheme="https"
                    server="May the eHealth Solutions be with you"
                    secure="true"
                    SSLEnabled="true"
                    SSLVerifyClient="none"
                    SSLProtocol="TLSv1.2"
                    SSLCertificateFile="${catalina.home}/conf/localhost.crt"
                    SSLCertificateKeyFile="${catalina.home}/conf/localhost.key"
                    SSLCACertificateFile="${catalina.home}/conf/localhost.crt"
                    SSLHonorCipherOrder="true">
                    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
            </Connector>

非常欢迎任何想法和建议!

谢谢和干杯 斯特凡

只是因为我讨厌没有答案的问题:

问题是 CORS 过滤器在请求 header 秒内正确检查了 Content-Type

Liferay 的 AUI 请求没有设置这个 header(有趣的是:它在 MS Edge 中唯一缺失 - 还不知道为什么)。

我现在做的是在 AUI.IO 的原型中设置 header 像这样:

AUI().IO.prototype._headers = {'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'text/plain;charset=UTF-8'};

现在,请求不再被 CORS 过滤器过滤掉。

干杯 斯特凡