Новый файл cookie JSESSIONID генерируется при входе в другое пространство имен Struts
Наше веб-приложение имеет два разных пространства имен. Для целей этого вопроса они будут называться /packageOne
а также /packageTwo
,
При доступе к действиям в Struts /packageOne
все работает как задумано JSESSIONID
не меняется.
На компьютере определенного типа (корпоративный ноутбук принадлежит сотруднику определенного отдела), JSESSIONID
изменяется при переходе к действию Struts в /packageTwo
, Кроме того, другие свойства в файле cookie исчезают вместе с изменением, поэтому создается впечатление, что новый файл cookie создан на месте. Возвращаясь к действию Struts внутри /packageOne
отменяет это изменение, восстанавливая предыдущее JSESSIONID
печенье.
Из нашего понимания, новый JSESSIONID
создается всякий раз, когда определенный пользовательский сеанс еще не существует. В этом случае мы задаемся вопросом, почему переключение пространств имен означало, что существующий пользовательский сеанс больше не применим и поэтому требует создания нового JSESSIONID
,
РЕДАКТИРОВАТЬ: это то, что наши web.xml
похоже. Это в значительной степени по умолчанию.
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts Project Name</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
РЕДАКТИРОВАТЬ 2: Вот как мы узнали, что JSESSIONID
изменено
- Мы открыли веб-приложение в Chrome и активировали консоль разработчика.
- После входа в форму нашего веб-приложения, расположенного в
/packageOne
пространство имен, мы переходим на главную домашнюю страницу, которая является еще одним действием Struts в том же пространстве имен/packageOne
- Мы переключились на вкладку "Ресурсы", развернули элемент "Cookies" в дереве ресурсов и нажали на "cookie", который был назван в честь нашего домена.
- В таблице справа от дерева ресурсов мы видим
JSESSIONID
в качестве имени одной из строк и отметил это значение. Мы также отметили, что есть и другие области, такие какcsrf_token
,APISID
,HSID
,NID
и так далее. - После перехода к действию Struts в отдельном пространстве имен, а именно
/packageTwo
мы отметили в консоли разработчика, что cookie с тем же именем теперь имеют другоеJSESSIONID
значение (в столбце Значение) и что большинство других полей отсутствуют, за исключением одного, которое я забыл, что это было.
Я понимаю, что неясно, о чем мы просим. Мы пытаемся выяснить причины такой аномалии, как в нашей тестовой среде, промежуточной среде и многих других производственных средах для этого же веб-приложения, этого не происходит вообще (JSESSIONID
и другие поля в файле cookie остаются неизменными даже после переключения на действие Struts в /packageTwo
).
РЕДАКТИРОВАТЬ 3: Больше информации о проблемной среде, в которой произошла эта аномалия:
- Это корпоративный ноутбук, IBM Thinkpad.
- Это было связано с корпоративным WiFi.
- Он принадлежал отделу кадров.
- Мы не смогли воспроизвести ту же аномалию на корпоративном ноутбуке аналогичной модели и марки (IBM Thinkpad), который был подключен к тому же корпоративному Wi-Fi, с той разницей, что он принадлежал сотруднику ИТ-отдела.
- Однако мы можем воспроизвести ту же аномалию на другом ПК, принадлежащем одному и тому же сотруднику, и о проблеме сообщили другие сотрудники отдела.