2017-10-17 6 views
0

Dans Safari 10.1.1 le bouton de retour du navigateur ne recharge pas la page cible, donc $_SERVER['SCRIPT_NAME'] n'est pas modifié.

Y at-il un moyen de recharger la page cible lorsque le bouton de retour du navigateur est pressé. J'ai essayé ce qui suit:

header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1. 
header("Pragma: no-cache"); // HTTP 1.0. 
header("Expires: 0"); // Proxies. 

Cela ne fonctionne pas. Contexte: J'essaie de construire un historique de page fiable en PHP, mais comment puis-je, si le bouton de retour du navigateur ne déclenche rien sur le serveur?

Merci!

+0

Quel est l'objectif derrière la construction d'un historique de page fiable? Qu'est-ce que vous essayez d'accomplir? Vous pourriez faire quelque chose avec AJAX, je suppose, mais pourquoi? Avez-vous envisagé d'utiliser l'API History de JavaScript pour la navigation? – ceejayoz

+0

Merci pour votre commentaire. J'essaie de le décomposer: J'ai une page d'accueil et une deuxième page. Je passe de la page d'accueil à la deuxième page et vice versa. Si j'entre dans la page de démarrage de la deuxième page un contenu différent (une opération différente sur le serveur) devrait être montré/déclenché. Quelle serait la bonne façon d'y parvenir? Je vous remercie! – Phantom

Répondre

1

Dans votre cas, le navigateur n'appelle PAS TOUT le serveur. Dans la plupart des cas, les navigateurs afficheront simplement la version "locale/mise en cache" de la page précédente et n'ouvriront pas de connexion au serveur.

Vous pouvez trouver des solutions javascript ici pour forcer le reload: How to force reloading a page when using browser back button? ou ici How to refresh page on back button click?

La partie la plus pertinente étant l'utilisation de l'objet windows.performance.

if(!!window.performance && window.performance.navigation.type === 2) 
{ 
    window.location.reload(); 
} 
+0

Merci beaucoup. Je pensais qu'une commande "no-cache" (sur un site PHP ou HTML) pouvait arrêter la mise en cache, donc le navigateur doit initier une connexion au serveur. N'y a-t-il rien de tel? – Phantom

+0

L'exemple d'en-têtes que vous avez fourni est déjà bon et il n'y a rien de plus à ajouter, donc si le navigateur conserve une version en cache, le JS est la seule solution de contournement. Avez-vous appliqué ces en-têtes sur toutes les pages (le courant et le "précédent" avant le chargement du précédent)? – Flunch

+0

Oui, l'en-tête est appliqué à chaque page. Je vous remercie! – Phantom