Почему Internet Explorer не отправляет cookie-файл jsessionid по заголовку запроса? - PullRequest
0 голосов
/ 18 мая 2018

Я работаю над миграцией с веб-сервера Oracle iPlanet на Apache Tomcat в контейнерах OpenShift.Наше веб-приложение - Apache Struts 2.5, не использует Spring Framework.Проблема в том, что по какой-то причине сессия не работает и не работает только в Internet Explorer.Протестировано на Mozilla Firefox, Google Chrome и Apple Safari, и оно работает просто отлично, с этим сталкивается только Internet Explorer.

Вот мой web.xml сеанс для cookie:

<session-config>
    <session-timeout>30</session-timeout>
    <cookie-config>
        <path>/</path>
    </cookie-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>

Мой веб-приложениеURL-адрес похож на этот:

http://app -external-dev-4823.appcloud-np.mycompany.com / APPExternal /

Сгенерированный файл cookie такой:

Set-Cookie: JSESSIONID=8A46BC24370545E9885E67D050F25984.Tomcat7-rhel7; Version=1; Path="/"; HttpOnly

Я читал, что у Internet Explorer есть проблемы с DNS-URL, используя _, но это не так.

Сравнивая заголовок ответа для Google Chrome и Internet Explorer, я мог быне найти ничего неловкого

Google Chrome:

Cache-control:private
Content-Language:en-US
Content-Type:text/html;charset=ISO-8859-1
Date:Fri, 18 May 2018 12:08:07 GMT
Server:
Set-Cookie:JSESSIONID=3DC79F0159A3D3324658BD0A644BDE51.Tomcat7-rhel7; Version=1; Path="/"; HttpOnly
Set-Cookie:c4a1aaf48f2245d1880a957d46993e21=8fa84cd57f198140fc034497aab55b2a; path=/; HttpOnly
Set-Cookie:np_cookie=1479619875.20480.0000; path=/
Transfer-Encoding:chunked

Internet Explorer:

Response    HTTP/1.1 200 OK
Set-Cookie  JSESSIONID=3EF94406ED000ACD13A77958B424DDEC.Tomcat7-rhel7;     Version=1; Path="/"; HttpOnly
Content-Type    text/html;charset=ISO-8859-1
Content-Language    en-GB
Transfer-Encoding   chunked
Date    Fri, 18 May 2018 12:06:36 GMT
Server  

Я действительно тяну свои волосы здесь большими кусками.Я попытался изменить домен куки, путь, httponly и безопасные свойства, без изменений.Между прочим, он отлично работает, работая на Apache Tomcat локально.

1 Ответ

0 голосов
/ 17 сентября 2018

Возможно, это не ответ на вопрос, но из-за длинного комментария я выкладываю свое решение здесь.

Это было то же самое с нашим сервером.Это хорошо работает в локальной настройке, но на рабочем сервере эта проблема была там.После стольких затрат времени на поиски нового лучшего и надежного решения был разработан новый способ взаимодействия между клиентом и сервером.Основная идея состояла в том, чтобы создать наш файл cookie и отправить этот файл cookie клиенту.Это будет отправлено обратно на сервер для каждого запроса.


    HttpSession session = request.getSession();
    if (request.getParameter("JSESSIONID") != null) {
        Cookie userCookie = new Cookie("JSESSIONID", request.getParameter("JSESSIONID"));
        response.addCookie(userCookie);
    } else {
        String sessionId = session.getId();
        Cookie userCookie = new Cookie("JSESSIONID", sessionId);
        response.addCookie(userCookie);
    }

для получения дополнительной информации: Сеанс теряется и создается как новый в каждом запросе сервлета

...