Permettez-moi de citer à nouveau le problème tel que décrit par @Steg
J'ai eu un problème similaire au vôtre. J'effectue une requête ajax qui a 2 réponses possibles : une qui redirige le navigateur vers une nouvelle page et une qui une qui remplace un formulaire HTML existant sur la page actuelle par un nouveau formulaire. nouveau formulaire.
À mon avis, il s'agit d'un véritable défi qui devra être officiellement étendu aux normes HTTP actuelles.
Je pense que la nouvelle norme Http sera d'utiliser un nouveau code de statut. signification : actuellement 301/302
indique au navigateur qu'il doit aller chercher le contenu du fichier ce à une nouvelle location
.
Dans la norme étendue, il sera dit que si la réponse status: 308
(juste un exemple), alors le navigateur devrait rediriger la page principale vers la page location
fourni.
Ceci étant dit, je suis enclin à déjà imiter ceci futur et donc, lorsqu'un document.redirect est nécessaire, je demande au serveur de répondre comme :
status: 204 No Content
x-status: 308 Document Redirect
x-location: /login.html
Quand JS reçoit le " status: 204
", il vérifie l'existence de l'élément x-status: 308
et fait un document.redirect vers la page fournie dans l'en-tête location
en-tête.
Est-ce que cela a un sens pour vous ?
1 votes
(pas une réponse en tant que telle) - J'ai fait cela dans le passé en modifiant la bibliothèque jquery et en ajoutant une vérification de la page de connexion à chaque XHR complet. Ce n'est pas la meilleure solution car il faudrait le faire à chaque mise à jour, mais cela résout le problème.
1 votes
Voir la question connexe : stackoverflow.com/questions/5941933/
0 votes
En
HttpContext.Response.AddHeader
et vérifier le succès d'ajaxsetup est la voie à suivre.5 votes
Pourquoi le serveur ne renvoie pas 401 ? Dans ce cas, vous pouvez avoir un $.ajaxSetup global et utiliser le code d'état pour rediriger la page.
1 votes
Ce lien doanduyhai.wordpress.com/2012/04/21/ me donne la bonne solution