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=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>
非常欢迎任何想法和建议!
谢谢和干杯
斯特凡
只是因为我讨厌没有答案的问题:
问题是 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 过滤器过滤掉。
干杯
斯特凡
每当调用 /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>
非常欢迎任何想法和建议!
谢谢和干杯 斯特凡
只是因为我讨厌没有答案的问题:
问题是 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 过滤器过滤掉。
干杯 斯特凡