Rückkehr redirect als Antwort auf XHR-Anfrage
Was passiert, wenn der browser erhält eine redirect-Antwort auf eine ajax-Anfrage?
Verwandte: stackoverflow.com/q/8905545/248058
InformationsquelleAutor Vasil | 2008-11-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was passiert, wenn der browser erhält eine redirect-Antwort auf eine ajax-Anfrage?
Wenn der server schickt einen redirect (aka eine 302-Antwort plus einen Location: header) die Umleitung wird automatisch gefolgt von der browser. Die Antwort auf die zweiten Anfrage (vorausgesetzt, es ist auch kein weiterer redirect) ist was ausgesetzt wird, auf Ihrem Programm.
In der Tat, Sie don ' T haben die Fähigkeit zu erkennen, ob eine 302-Antwort aufgetreten ist. Wenn die 302-Weiterleitung führt zu einer 200, dann ist dein Programm verhält sich identisch wie wenn die ursprüngliche Anforderung führte direkt zum 200.
Dies ist sowohl meine Erfahrung und die das Verhalten nennt sich in der spec.
2016 Update: Zeit vergangen, und die gute Nachricht ist, dass die neue fetch () - API ist spec ' D zu bieten feiner Granulierte Kontrolle darüber, wie Sie Umleitungen, mit Standard-Verhalten ähnlich XHR. Das heißt, es funktioniert nur, wo fetch() implementiert ist nativ. Polyfill Versionen von fetch()—basierend auf XHR—weiterhin haben XHR Einschränkungen. Zum Glück, native browser-Unterstützung zu sein scheint Rundung schön.
das ist wohl logisch
Was soll passieren, wenn der redirect führt zu einer 401 statt 200? Ich scheine zu sein, läuft in das Problem und erhalte Fehler mit jQuery, so versuche ich, herauszufinden, genau das, was der Browser/JS ist eigentlich zu tun.
Im Falle einer Umleitung zu einer 401 (oder irgendeinen 4xx-oder 5xx-Fehler), würde ich annehmen, dass Ihr Programm Verhalten würde, als wenn die Anfrage führte direkt zu einem 401. Ist das nicht das, was Sie sehen?
Eine RESTful API senden kann, 201 und einen Location-header nach einer POST-Anforderung; siehe restapitutorial.com/lessons/httpmethods.html.
InformationsquelleAutor greim
Den
ajax-request
Folgen redirect, soweit ich weiß. Der eigentliche Inhalt (.responseText
,.responseXML
) wird der Inhalt von der Seite, die Sie umgeleitet werden.Könnten Sie abfangen der Umleitung (
status-code
,location-header
) aufreadyState
2 oder 3, aber nicht sicher.getAllResponseHeaders()
gleich ist.InformationsquelleAutor jishi