Bueno, yo he terminado con esto ...JsessionId - cómo evitar; jsessionid = XXX en la primera llamada a una página? funciona si la primera página JSP es
que tiene una aplicación que utiliza el index.jsp bienvenida páginas con un <iframe></iframe>
el contenido del iframe es una página JSF. Si accedo index.jsp Veo una cookie que ya están en la primera ponerse en Firebug:
Set-Cookie JSESSIONID=C615DA89B6EF73F801973EA3DCD3B226; Path=/
La página de los hereda esta JSESSIONID. PERO: cuando accedo directamente a la página del <iframe/>
, obtengo el jsessionId reescrito en todas las URL sin una cookie, en la primera solicitud. Luego se usa la cookie. Todo está bien, si: El sistema de seguridad me permitiría realizar reescrituras de URL.
corro JBoss 4.2.2
que quiero lograr el mismo comportamiento que tengo con el index.jsp - por ejemplo, siempre use cookies y siempre evite reescribir http.
[EDIT] gracias a la respuesta de balusc escribí esto:
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;
}
}
No olvide añadirlo a su 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>
gracias. ¿Hay una 'donación para la bondad del cerdo afortunado' en su sitio web? ¿Puedo pedirle una pizza? – Toskan
De nada. En la columna de la derecha de mi sitio web/blog, puede encontrar un botón de donación de PayPal. Esa es la única forma hasta ahora. – BalusC
parece que no puedo enviarle un mensaje personal. Debes averiguar cómo forzar que PayPal sea inglés. Ese holandés es un poco confuso :-) "Snel doneren" :-D – Toskan