Как избежать ;jsessionid=XXX при первом вызове страницы? это работает, если первая страница jsp

У меня есть приложение, которое использует страницу приветствия -index.jsp с <iframe></iframe>, содержимое iframe представляет собой страницу jsf. Если я обращаюсь к index.jsp, я вижу файл cookie уже при первом входе в firebug:

Set-Cookie  JSESSIONID=C615DA89B6EF73F801973EA3DCD3B226; Path=/

Страница <iframe>наследует этот jsessionid. НО :, когда я напрямую обращаюсь к странице <iframe/>, я получаю jsessionId, переписанный для всех URL-адресов без файла cookie -по первому запросу. После этого используется файл cookie. Все хорошо -, если :Система безопасности позволит мне выполнять перезапись URL.

У меня jboss 4.2.2

Я хочу добиться того же поведения, что и с index.jsp -, например. всегда используйте файлы cookie и всегда избегайте перезаписи http.

[РЕДАКТИРОВАТЬ] благодаря ответу balusc я написал это:

public class JsessionIdAvoiderFilter implements Filter {

            public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,
                    ServletException {
                boolean allowFilterChain = redirectToAvoidJsessionId((HttpServletRequest) req, (HttpServletResponse)res);

                         //I'm doing this because if I execute the request completely, it will perform a pretty heavy lookup operation. No need to do it twice.
                if(allowFilterChain)
                    chain.doFilter(req, res);
            }


            public static boolean redirectToAvoidJsessionId(HttpServletRequest req, HttpServletResponse res) {
                HttpSession s = req.getSession();
                if(s.isNew()) {

 //after the redirect we don't want to redirect again.
if(!(req.isRequestedSessionIdFromCookie()&&req.isRequestedSessionIdFromURL()))
                    {
                                //yeah we have request parameters actually on that request.         
                        String qs = req.getQueryString();

                        String requestURI = req.getRequestURI();
                        try {
                            res.sendRedirect(requestURI+"?"+qs);
                            return false;
                        } catch (IOException e) {
                            logger.error("Error sending redirect. " + e.getMessage());
                        }
                    }
                }
                return true;
            }
}

Не забудьте добавить его в свойweb.xml

    <filter> 
    <display-name>JsessionId Filter</display-name> 
    <filter-name>jsessionIdAvoiderFilter</filter-name> 
    <filter-class>my.namespace.JsessionIdAvoiderFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>jsessionIdAvoiderFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter> 
15
задан Paolo Forgia 19 September 2018 в 07:00
поделиться