J'ai une exigence dans laquelle une valeur ne doit pas être mise en cache dans le serveur ni le navigateur en tant que cookie sur des domaines et des sessions.
J'ai donc choisi de rediriger permanente à la valeur p>
servlet: p> script: p> console-sortie: p> Après la charge réelle du BrowserCache ne renvoie pas le nom d'utilisateur que j'ai inséré. P> Pourquoi le navigateur n'est-il pas en cache? P> p> p>
3 Réponses :
Votre demande est un appel AJAX qui est une demande code> async code> à votre servlet dans ce cas que votre redirection dans ServerSide n'affecte pas à Clientide. Cette demande fonctionne comme un fil séparé sur votre navigateur. P>
Vous devez donc spécifier des données de réponse (URL dans ce cas avec la chaîne de requête). Après la réponse du servlet dans votre rappel de réussite AJAX, vous devez spécifier l'emplacement à rediriger. p>
pour la redirection après Ajax Succès Sinon, soumettez simplement le formulaire et rediriger via votre servlet. p> window.location.href = reponseurl; code>, au lieu de rediriger, vous pouvez définir la valeur de votre entrée. p>
Redirection de la demande Ajax ne redirigea pas le navigateur vers le nouvel emplacement, et si cela ne vous auriez plus votre page, vous n'avez plus que la réponse du servlet.
Alors quand vous Actualisez la page, vous demandez à nouveau l'URL d'origine de zéro à nouveau et le nom d'utilisateur est perdu. p>
Vous pouvez ajouter le nom d'utilisateur dans l'URL directement dans JavaScript: P>
jQuery('.username').val( window.location.hash );
Je n'aime pas le navigateur pour changer l'emplacement.
Même si vous obtenez le mécanisme de 301 travaillant, vous n'aurez aucune garantie sur la durée de laquelle le navigateur mettra en cache la redirection. Je n'ai pas de réponse immédiatement pour la raison pour laquelle les années 301 ne sont pas mises en cache pour vous, cependant, si vous allez bien avec le navigateur stockant le nom d'utilisateur quelque part em> (après tout, c'est ce que vous essayez de faire avec les 301s), et c'est juste que vous ne voulez pas spécifiquement que cela soit stocké dans un cookie em>, puis et p> ou utilisez docs ici P > p> sessionStorage code> ou
localStorage code> Soyez le bon choix:
localStorage code> pour le stocker de manière persistante à travers les sessions. < / p>
Ces stockages sont limités à un domaine ou à une session. Ceci est différent du mécanisme BHSM. J'aime laisser tout le monde partager ces informations sur différents domaines, extensions et plugins de différentes pages.
D'accord. Vaut probablement la peine d'ajouter cette exigence à la question.
Que dit la barre d'adresse avant et après la recharge?
http: // localhost: 8080 / code>
BHSM est le navigateurhistorystoramécanisme.
Au fait, si vous voulez que le navigateur cache le résultat, pourquoi appelez-vous
réponse.addadheader ("pragma", "no-cache"); code>?
@CUPAWNTAE J'aime l'empêcher toute proxy de la mise en cache. Pas le navigateur. Le pragma empêche-t-il aussi le navigateur de la mise en cache?
En fait, il est censé être utilisé uniquement comme un en-tête de requête selon la spécification, alors ce qu'il fait comme un en-tête de réponse est indéfini au mieux. Quoi qu'il en soit, il n'est pas limité aux mandataires, alors je serais tenté de le sortir, mais pas sûr que cela fait une différence ici. Le diagramme est utile BTW.
J'ai trouvé le pragma dans le dernier appel au servlet dans le diagramme. Le pragma est transformé en une en-tête de requête et empêche les proxy de la mise en cache si vous souhaitez modifier la valeur
abc code>.
Il a également (officiellement au moins) indique au serveur que le client ne veut pas une copie mise en cache i>. Puisque vous contrôlerez manuellement le mécanisme de cache de serveur, cela ne devrait pas être un problème sur le côté serveur, mais si le client envoie cet en-tête, cela signifie peut-être qu'il l'a effacé dans le cache. Quoi qu'il en soit, je présume que vous avez essayé de le supprimer et que cela n'a pas résolu la question initiale, mais je serais tenté de le laisser sortir de l'équation jusqu'à ce que vous obteniez les choses qui y travaillent, juste pour l'exclure en tant que coupable.
Vous pouvez obtenir plus d'aide si vous avez changé le titre de la question. Je n'ai jamais rencontré l'initialisme BHSM avant et googling ne trouve rien non plus, afin que vous puissiez perdre des gens tout de suite parce qu'ils ne le reconnaissent pas. En outre, le problème réel n'est pas si clair en un coup d'œil. Quelque chose comme "le navigateur ne cache pas 301 réponses de redirection aux demandes d'Ajax" pourrait attirer quelqu'un qui connaît la réponse immédiatement.
Voulez-vous utiliser la touche code> code> au lieu de
val code> dans l'appel à additionner? Si le navigateur n'a pas envoyé de
If-modifié - depuis code>, il ne s'attend probablement pas à un 304. Généralement, un
If-modifié - depuis code> n'est envoyé que si la dernière demande à celle-ci L'URL a renvoyé un
en-tête code> de dernière modification.