web-dev-qa-db-fra.com

Pourquoi Chrome met-il en cache ma page de connexion?

Notre site Web d’alphabétisation pour les enfants handicapés pose des problèmes de connexion à certains utilisateurs. Vous pouvez visiter le site à l’adresse http://tarheelreader.org/. Si vous vous connectez à https://tarheelreader.org/login/, puis que vous revenez à la page de connexion, vous devriez voir un message de déconnexion. Mais Chrome met la page en cache et renvoie à la place la page de connexion d'origine. Les en-têtes sont:

Cache-Control:no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0
Content-Encoding:gzip
Content-Type:text/html; charset=UTF-8
Date:Thu, 26 Jan 2017 22:55:55 GMT
Expires:Wed, 11 Jan 1984 05:00:00 GMT
Link:<https://tarheelreader.org/?p=110663>; rel=shortlink
Pragma:no-cache
Server:nginx
Vary:Accept-Encoding
X-UA_Compatible:IE=Edge,chrome=1

Quels sont à peu près tous les moyens que je pourrais trouver pour dire ne cache pas cette page. Mais l'onglet Réseau dans le débogueur affiche la page provenant du cache disque. Si je désactive le cache avec la case à cocher dans le débogueur, les choses fonctionnent comme il se doit.

Mise à jour Si je configure la version sandbox du site pour utiliser HTTPS, seul le problème disparaît. Peut-être que c'est quelque chose à propos du passage de HTTP à HTTPS et vice-versa?

3
GaryBishop

no-cache n'est pas aussi fort que no-store. documentation de Chrome indique que no-cache indique un document réutilisable, tandis que no-store indique qu'il ne devrait pas être réutilisé.

Sur la base de ces informations, votre en-tête Cache-Control devrait simplement être:

Cache-Control: no-store

Les valeurs supplémentaires qu’il contient peuvent laisser Chrome choisir ce qu’il souhaite honorer.

5
Stephen Ostermiller