Как настроить Tomcat, чтобы он не кодировал идентификатор сеанса в URL при вызове HttpServletResponse.encodeURL () - PullRequest
8 голосов
/ 17 февраля 2010

Похоже на глупый вопрос, на который ответ будет "Не используйте encodeURL ()!" но я работаю с базой кода, которая использует теги привязки netui в JSP, и мне нужно отключить запись JSESSIONID в URL-адреса, так как это представляет угрозу безопасности.

В WebLogic вы можете настроить это, настроив url-rewriting-enabled в weblogic.xml (я знаю, потому что написал эту функцию на сервере WebLogic!) Тем не менее, я не могу найти эквивалентную опцию конфигурации для Tomcat.

Ответы [ 3 ]

9 голосов
/ 05 октября 2011

Tomcat 6 поддерживает атрибут disableURLRewriting, который можно установить в true в вашем элементе Context:

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html#Common_Attributes

5 голосов
/ 17 февраля 2010

Никаких настроек не приходит на ум. Но это довольно легко сделать, создав первую запись Filter прослушивания интересующего url-pattern (может быть /*?) И заменяя ServletResponse реализацией HttpServletResponseWrapper, где encodeURL() возвращает тот же аргумент без изменений.

Пример запуска:

public void doFilter(ServletRequest request, ServletResponse response) throws ServletException, IOException {
    chain.doFilter(request, new HttpServletResponseWrapper((HttpServletResponse) response) {
        public String encodeURL(String url) {
            return url;
        }
    });
}
0 голосов
/ 12 октября 2018

Как указано в https://fralef.me/tomcat-disable-jsessionid-in-url.html - для этого есть специальная функция сервлета

<session-config>
   <tracking-mode>COOKIE</tracking-mode>
</session-config>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...