Scénario - L'utilisateur poste un formulaire de formSubmit.cfm à formAction.cfm qui crée des données html qui ne doivent pas être stockées dans le cache du navigateur. Il a également des balises d'ancrage à linkTarget.cfm. Si l'utilisateur utilise son navigateur pour revenir à formAction.cfm, il devrait être invité par le navigateur à soumettre de nouveau le formulaire.Ne pas mettre en cache et conserver l'étendue du formulaire
Cela peut être accompli par les en-têtes http en général, qui sont simplifiés avec le tag <cfheader>
.
Le problème est qu'avec Chrome, si je parviens à ne pas mettre en cache la page, je perds la portée du formulaire.
Exemple de code:
formSubmit.cfm
<form action="formAction.cfm" method="post">
<input type="submit" name="submittedForm" value="submitMe" />
</form>
formAction.cfm (minus headers)
<cfif structKeyExists(form, 'submittedForm')>
<p>Form Scope exists</p>
<cfelse>
<p>Form Scope Does Not Exist</p>
</cfif>
<p><a href="linkTarget.cfm">Link to next page.</a></p>
La méthode d'essai était de vider le cache, puis regarder en naviguant au chrome: // cache /. Une fois là, je chercherais formAction.cfm. En outre, je devrais actualiser la page chaque fois que j'ai effacé le cache.
J'ai essayé différentes combinaisons d'en-têtes, mais voici les plus pertinentes. En outre, à l'aide des outils de développement de Chrome, la présence ou l'absence de données de formulaire correspondait au résultat de la fonction structKeyExists.
Comment puis-je faire en sorte que Chrome conserve les données de formulaire sans mettre en cache la page?
Vous souhaitez que le navigateur cache le corps POST de la demande? Il n'y a pas une telle chose. Certains navigateurs ont leurs propres moyens de conserver les données de formulaire au cas où les utilisateurs doivent les soumettre à nouveau, mais cela n'a rien à voir avec HTTP et il n'existe aucun moyen général de contrôler cela. Vouloir mettre en cache une réponse POST semble faux pour commencer. Que diriez-vous de POST-Redirect-GET (303 Voir autre)? Si vous avez besoin de stocker le corps de la requête POST indépendamment, vous devez le stocker/restaurer vous-même, par ex. utiliser la session ou le stockage local (stockage Web du navigateur). – Alex