Redirection no-cache

Modérateurs: Ligevum, Crepuscule, Wargaming, Okracoke, Simerion, Heroes, Bestiaire, Exsulare, terato, pentacle, Nainwak

Redirection no-cache

Messagepar Nico100 » 14 Mai 2009, 14:39

salut,

J'ai un script php qui essentiellement fait:

Code: Tout sélectionner
header("location: $url);

Or je voudrais etre sur à 100% qu'a chaque fois que j'appelle ce script la page $url est bel et bien appelé et que le navigateur ne va pas taper dans son cache... (ce qui est le cas actuellement)

Sauriez vous comment gerer ce cas?
J'ai bien essayé d'ajouter un
Code: Tout sélectionner
header("META HTTP-EQUIV=\"CACHE-CONTROL\" CONTENT=\"NO-CACHE\"");
dans mon script mais en vain.

Merci
Avatar de l’utilisateur
Nico100
 
Messages: 283
Inscription: 13 Avr 2004, 15:23

Messagepar Daimonos Tereutes » 16 Mai 2009, 01:50

Je pense que tu a mélanger plusieurs syntaxes et que tu t'es compliqué la vie. Essai avec
Code: Tout sélectionner
header("Cache-Control : no-cache");

et si tu veux que ça fonctionne avec les proxys un peu anciens, ajoute :
Code: Tout sélectionner
header("Pragma : no-cache");
header("Expires : 0");


Note que, même si la RFC semble dire que les tokens sont insensibles à la casse, en pratique tout le monde utilise cette casse dans l'éventualité d'un navigateur mal écris.
Admin technique de nainwak.org
Daimonos Tereutes
Responsable Technique de l'Association
 
Messages: 926
Inscription: 30 Mar 2004, 18:39

Messagepar Nico100 » 18 Mai 2009, 12:48

Oui effectivement je me suis un peu emmêlé les pinceaux dans les syntaxes...

Hélas ça ne change rien...

J'affiche la page: mon script est exécuté
Je vais sur une autre page
Je clique sur 'Back': la page est affichée mais la redirection se fait sans renvoi d'une nouvelle requête HTTP (via le cache!).

Help! :cry:
Avatar de l’utilisateur
Nico100
 
Messages: 283
Inscription: 13 Avr 2004, 15:23

Messagepar Daimonos Tereutes » 18 Mai 2009, 14:37

euh si tu fait back c'est normal.
La navigation dans l'historique du navigateur se fait généralement sans réexécuter la requête.

le header(..) tu le met sur quelle page ? la redirection ou la page affichée ?
Admin technique de nainwak.org
Daimonos Tereutes
Responsable Technique de l'Association
 
Messages: 926
Inscription: 30 Mar 2004, 18:39

Messagepar Nico100 » 18 Mai 2009, 14:59

dans le doute... les 2!

Pas mieux! :cry:
Avatar de l’utilisateur
Nico100
 
Messages: 283
Inscription: 13 Avr 2004, 15:23

Messagepar Chatissimus » 18 Mai 2009, 20:40

qu'est ce qui est mis en cache ?

le code source ou les image / css &co ?
Avatar de l’utilisateur
Chatissimus
 
Messages: 51
Inscription: 19 Jan 2007, 22:50

Messagepar Nico100 » 18 Mai 2009, 23:40

la redirection pointe sur un autre script qui fait un insert en DB... mais il n'a pas lieu
Avatar de l’utilisateur
Nico100
 
Messages: 283
Inscription: 13 Avr 2004, 15:23

Messagepar Daimonos Tereutes » 19 Mai 2009, 19:43

Nico100 a écrit:Oui effectivement je me suis un peu emmêlé les pinceaux dans les syntaxes...

Hélas ça ne change rien...

J'affiche la page:(1) la redirection
mon script est exécuté(2) la page du sript
Je vais sur une autre page(3)l'autre page
Je clique sur 'Back': la page est affichée mais la redirection se fait sans renvoi d'une nouvelle requête HTTP (via le cache!).(4)


Help! :cry:


Et non quand tu clique sur "back" dans ton navigateur, il reviens en (2) et non pas en (1). Si tu veux qu'il retourne en (1) il te faut faire deux fois "back"

De manière générale, il ne faut pas utiliser le bouton back du navigateur, mais fournir au visiteur un bouton ou lien "retour" qui pointe vers (1).
Une autre solution, si le navigateur le permet, ce qui n'est pas toujours le cas, avec la sécurisation à outrance des navigateurs, c'est de modifier l'historique de navigation pour supprimer la page (2). Ceci peut se faire avec un déclencheur "onunload" sur le body de la page (2)

Et enfin dernière astuce qui peut peut t'être utile :
une page type "GET" est réaffichée sans rechargement lors d'un "back"
une page type "POST" est rechargée lors d'un "back" (le navigateur te prévient)
Admin technique de nainwak.org
Daimonos Tereutes
Responsable Technique de l'Association
 
Messages: 926
Inscription: 30 Mar 2004, 18:39

Messagepar Nico100 » 19 Mai 2009, 19:59

Non ce n'est pas comme ca que ca marche. J'utilise un plug-in Firefox pour voir les entetes des requetes executées... sur 'Back' c'est (1) qui est appelé... mais pas (2)

Et c'est ca mon soucis... moi je voudrais (1) ET (2)
Avatar de l’utilisateur
Nico100
 
Messages: 283
Inscription: 13 Avr 2004, 15:23

Messagepar Haiken » 23 Mai 2009, 13:28

une redirection avec Location écrase la page courante conservée dans l'historique de navigation. La page qui effectue la redirection ne sera donc jamais accessible avec un "back". Les navigateurs sont concus comme ça, on n'y peut rien


tu demandes une page A elle s'affiche. L'historique contient (A). tu cliques sur un lien vers B
B s'affiche, l'historique contient (A, B) mais B renvoie un entête Location vers C
C s'affiche. L'historique contient (A, C). Tu cliques sur un autre lien vers D
D s'affiche, l'historique contient (A, C, D)
Un clic vers back ramène à C. Un deuxième à A.
Avatar de l’utilisateur
Haiken
Président de l'Association
 
Messages: 666
Inscription: 01 Avr 2004, 09:00

Messagepar Chatissimus » 28 Mai 2009, 20:32

Haiken a écrit:une redirection avec Location écrase la page courante conservée dans l'historique de navigation. La page qui effectue la redirection ne sera donc jamais accessible avec un "back". Les navigateurs sont concus comme ça, on n'y peut rien


en même temps c'est logique, la page qui fait la redirection n'a jamais été affiché puisqu'il y a eu une redirection vers une autre page durant l'échange des entêtes
Avatar de l’utilisateur
Chatissimus
 
Messages: 51
Inscription: 19 Jan 2007, 22:50


Retourner vers Questions Pratiques/Techniques

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron