无论何时调用/c/portal/expire_session
或/c/portal/extend_session
(以及其他一些),我都面临403禁止的异常。即使没有用户登录,这种情况也会经常发生(因为来宾用户也保留了会话)。
我故意关闭了Liferay中的自动会话扩展功能(session.timeout.auto.extend=false
,session.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>
任何想法和建议都非常欢迎!
感激和欢呼 斯蒂芬
答案 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过滤器不再将请求过滤掉。
欢呼 斯蒂芬