Antworten:
Was passiert, wenn der Browser eine Umleitungsantwort auf eine Ajax-Anfrage erhält?
Wenn der Server eine Umleitung sendet (auch bekannt als 302-Antwort plus Location: -Header), folgt die Weiterleitung automatisch vom Browser. Die Antwort auf die zweite Anforderung (vorausgesetzt, es handelt sich auch nicht um eine weitere Umleitung) ist das, was Ihrem Programm angezeigt wird.
Tatsächlich können Sie nicht erkennen, ob eine 302-Antwort aufgetreten ist. Wenn die 302-Umleitung zu einer 200 führt, verhält sich Ihr Programm genauso, als ob die ursprüngliche Anforderung direkt zu einer 200 geführt hätte.
Dies war sowohl meine Erfahrung als auch das in der Spezifikation angegebene Verhalten .
Update 2016: Die Zeit ist vergangen, und die gute Nachricht ist, dass die neue fetch () - API eine genauere Kontrolle darüber bietet, wie Weiterleitungen behandelt werden , wobei das Standardverhalten XHR ähnelt. Das heißt, es funktioniert nur, wenn fetch () nativ implementiert ist . Polyfill-Versionen von fetch () , die auf XHR basieren, unterliegen weiterhin den Einschränkungen von XHR . Glücklicherweise scheint die native Browserunterstützung gut abzurunden.
Die ajax-request
werden dieser Weiterleitung afaik folgen. Der eigentliche Inhalt ( .responseText
, .responseXML
) ist der Inhalt der Seite, auf die Sie umgeleitet werden.
Möglicherweise können Sie die Umleitung ( status-code
, location-header
) auf readyState
2 oder 3 abfangen , sind sich aber nicht sicher.
getAllResponseHeaders()
ist gleich.