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

时间:2018-11-21 08:43:46

标签: tomcat liferay liferay-6 tomcat8

无论何时调用/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>

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

感激和欢呼 斯蒂芬

1 个答案:

答案 0 :(得分:0)

仅因为我讨厌未解决的问题:

问题是一个CORS过滤器,该过滤器正确检查了请求标头中的Content-Type

Liferay的AUI请求未设置此标头(有趣的是:它仅在MS Edge中丢失-无法确定原因)。

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

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

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

欢呼 斯蒂芬