Расширение сеанса Liferay (/ c / portal / exte_session) - HTTP 403 запрещено - PullRequest
0 голосов
/ 21 ноября 2018

Я сталкиваюсь с 403 Запрещенными исключениями при каждом вызове /c/portal/expire_session или /c/portal/extend_session (и некоторых других).Это происходит регулярно, даже когда ни один пользователь не вошел в систему (поскольку гостевой пользователь также сохраняет сеанс).

Я специально отключил автоматическое продление сеанса в Liferay (session.timeout.auto.extend=false, session.timeout.redirect.on.expire=true).

Я использую Liferay 6.2 CE GA5 в комплекте с Tomcat 8.5.Это более или менее простая настройка (без дополнительных фильтров, только некоторые пользовательские портлеты и перехватчики).

Консоль разработчика 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 голосов
/ 05 декабря 2018

Просто потому, что я ненавижу неотвеченные вопросы:

Проблема была в фильтре 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.

Приветствия Стефана

...