2011-02-28 3 views
4

Comment puis-je arrêter la mise en cache des pages du navigateur à l'aide de servlets?Comment éviter que le résultat de Servlets soit mis en cache?

Je veux cette session devrait expirer si j'appuie sur le bouton Retour du navigateur quand je suis connecté.

+0

double possible de [Restreindre utilisateur de la page précédente après signout.] (Http://stackoverflow.com/questions/4194207/restrict-user-from-the-previous-page-after-signout) – BalusC

Répondre

2

Si vous obtenez un objet HttpServletResponse (mise en œuvre) pour la demande, vous pouvez envoyer des en-têtes HTTP qui encouragera les navigateurs de ne pas Cache le contenu que vous leur envoyez.

HttpServletResponse response; // You'll need to initialize this properly 

response.setHeader("Cache-control", "no-cache, no-store"); 
response.setHeader("Pragma", "no-cache"); 
response.setHeader("Expires", "-1"); 

Voir la documentation HttpServletResponse et HttpServletResponseWrapper. Dans le cas où vous avez besoin de lire sur les en-têtes de contrôle de cache dans HTTP, check this out.

+0

Toutes les lignes ci-dessus sont-elles requises ou l'une des 'setHeader()' est-elle suffisante? – Alpine

+0

@Alpine Dépend du navigateur. Voir le lien que je viens d'ajouter concernant les en-têtes de contrôle de cache. Ce ne sont que des exemples. –

+0

R.Younce: Merci ... mais j'ai toujours un problème. après la connexion si je presse en arrière et puis transférez la session est toujours sur – Prashant

10

Pour désactiver définitivement le cache.

// Set to expire far in the past. 
    response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT"); 

    // Set standard HTTP/1.1 no-cache headers. 
    response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); 

    // Set IE extended HTTP/1.1 no-cache headers (use addHeader). 
    response.addHeader("Cache-Control", "post-check=0, pre-check=0"); 

    // Set standard HTTP/1.0 no-cache header. 
    response.setHeader("Pragma", "no-cache"); 

Effacement du cache client n'expire immédiatement la session, mais efface les cookies de session dans le navigateur. Pour que la session expire immédiatement, vous devez spécifier explicitement dans jsp côté serveur ou servlet.

// use session invalidate 
session.invalidate(); 
Questions connexes