Как получить контейнер сервлета для чтения JSESSIONID из строки запроса, а не из URL - PullRequest
3 голосов
/ 27 августа 2011

Мне нужно иметь возможность поддерживать сеанс, указав JSESSIONID в качестве параметра строки запроса URL, а не части самого URL.

Иными словами, мне нужно поддерживать сеанс, подобный этому

http://myserver.com? JSESSIONID = A463B23BC4F2342FA

вместо

http://myserver.com;jsessionid=A463B23BC4F2342FA

Для контейнера сервлета я использую как tomcat 6.0, так и weblogic 10.3

Причина:

Я создаю сетевую ссылку на Google Планета Земля, которая требует от меня сохранения сеанса для запросов, которые делает клиент. Google Планета Земля не поддерживает файлы cookie, и, похоже, нет способа изменить URL-адрес, используемый для отправки запросов. Я могу только сказать ему добавить параметр строки запроса к последующим запросам, добавив следующее в kml в ответах моего сервера

<NetworkLinkControl>
    <cookie>JSESSIONID=A463B23BC4F2342FA</cookie>
</NetworkLinkControl>

Ответы [ 2 ]

2 голосов
/ 27 августа 2011

Не возможно. Я бы создал на вашей стороне фильтр , который перенаправляет запрос на правильный URL-адрес при получении URL-адреса с JSESSIONID в строке запроса.

Базовый стартовый пример:

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    if ("GET".equals(request.getMethod()) && request.getParameter("JSESSIONID") != null) {
        response.sendRedirect(request.getRequestURL().append(";JSESSIONID=")
            .append(request.getParameter("JSESSIONID")).toString());
    } else {
        chain.doFilter(request, response);
    }
}

Сопоставьте это с шаблоном URL, который охватывает запросы, которые потенциально могут быть отправлены этим сайтом. Или, если нет, просто на /*.

0 голосов
/ 10 сентября 2013

Для этой цели мы создали специальный клапан Tomcat. Это довольно просто, но для Tomcat.

...