Lassen Sie mich noch einmal das von @Steg beschriebene Problem zitieren
Ich hatte ein ähnliches Problem wie Sie. Ich führe eine Ajax-Anfrage aus, die 2 mögliche Antworten hat: eine, die den Browser auf eine neue Seite umleitet und eine, die ein vorhandenes HTML-Formular auf der aktuellen Seite durch ein neues ersetzt ersetzt.
IMHO ist dies eine echte Herausforderung und muss offiziell auf die aktuellen HTTP-Standards ausgeweitet werden.
Ich glaube, der neue Http-Standard wird die Verwendung eines neuen Status-Codes vorsehen. Bedeutung: derzeit 301/302
weist den Browser an, den Inhalt von este Anfrage an eine neue location
.
In der erweiterten Norm heißt es, dass, wenn die Antwort status: 308
(nur ein Beispiel), dann sollte der Browser die Hauptseite auf die location
zur Verfügung gestellt.
Davon abgesehen bin ich geneigt, dies bereits zu imitieren Zukunft Verhalten, und daher, wenn eine document.redirect benötigt wird, habe ich den Server als Antwort:
status: 204 No Content
x-status: 308 Document Redirect
x-location: /login.html
Wenn JS die " status: 204
", prüft es die Existenz der x-status: 308
Kopfzeile und führt eine document.redirect zu der Seite aus, die in der location
Kopfzeile.
Ergibt das einen Sinn für Sie?
1 Stimmen
(nicht eine Antwort als solche) - Ich habe dies in der Vergangenheit durch Bearbeiten der Jquery-Bibliothek und Hinzufügen einer Prüfung für die Login-Seite auf jedem XHR abgeschlossen getan. Nicht die beste Lösung, weil es jedes Mal getan werden müsste, wenn Sie aktualisieren, aber es löst das Problem.
1 Stimmen
Siehe dazugehörige Frage: stackoverflow.com/questions/5941933/
0 Stimmen
El
HttpContext.Response.AddHeader
und prüfen Sie den Erfolg von ajaxsetup6 Stimmen
Warum kann der Server nicht 401 zurückgeben? In diesem Fall können Sie ein globales $.ajaxSetup haben und den Statuscode verwenden, um die Seite umzuleiten.
1 Stimmen
Dieser Link doanduyhai.wordpress.com/2012/04/21/ gibt mir die richtige Lösung
0 Stimmen
Schauen Sie sich bitte an diese Antwort .