Antworten:
Nicht gemäß dem W3C-Standard für das XMLHttpRequest-Objekt (Hervorhebung hinzugefügt):
Wenn die Antwort eine HTTP-Umleitung ist:
Wenn der Ursprung der vom Location-Header übermittelten URL mit dem XMLHttpRequest-Ursprung identisch ist und die Umleitung nicht gegen die Vorsichtsmaßnahmen für Endlosschleifen verstößt, befolgen Sie die Umleitung transparent, während Sie die Anforderungsereignisregeln für denselben Ursprung beachten.
Sie überlegten es für eine zukünftige Veröffentlichung:
Diese Spezifikation enthält nicht die folgenden Funktionen, die für eine zukünftige Version dieser Spezifikation in Betracht gezogen werden:
- Eigenschaft zum Deaktivieren nach Weiterleitungen;
In der neuesten Spezifikation wird dies jedoch nicht mehr erwähnt.
Die neue API Fetch unterstützt verschiedene Arten der Umleitung Handhabung: follow
, error
und manual
, aber ich kann nicht einen Weg finden , die neue URL oder den Statuscode anzuzeigen , wenn die Umleitung abgebrochen wurde. Sie können die Umleitung selbst einfach stoppen, und dann sieht es aus wie ein Fehler (leere Antwort). Wenn das alles ist, was Sie brauchen, können Sie loslegen. Auch sollte man sich bewusst sein , dass die über diese API gestellten Anträge nicht stornierbar sind noch . Sie sind jetzt.
Bei XMLHttpRequest können Sie HEAD
den Server überprüfen, ob sich die URL geändert hat:
var http = new XMLHttpRequest();
http.open('HEAD', '/the/url');
http.onreadystatechange = function() {
if (this.readyState === this.DONE) {
console.log(this.responseURL);
}
};
http.send();
Sie erhalten den Statuscode nicht, finden jedoch die neue URL, ohne die gesamte Seite von dort herunterzuladen.
OPTIONS
die bessere Wahl, funktioniert jedoch nur für nicht allgemeine Zwecke usw. Der Administrator hat die Umleitung der gesamten Site / des gesamten Schemas konfiguriert, z. B. HTTP -> HTTPS
Sie können die responseURL
Eigenschaft verwenden, um das Umleitungsziel abzurufen oder zu überprüfen, ob die Antwort letztendlich von einem von Ihnen akzeptierten Speicherort abgerufen wurde.
Dies bedeutet natürlich, dass das Ergebnis trotzdem abgerufen wird, aber zumindest können Sie die erforderlichen Informationen über das Umleitungsziel abrufen und beispielsweise Bedingungen erkennen, unter denen Sie die Antwort verwerfen möchten.
Nein, es gibt keinen Platz in der API, der von XMLHttpRequest verfügbar gemacht wird, mit dem Sie das Standardverhalten überschreiben können, einem 301 oder 302 automatisch zu folgen.
Wenn auf dem Client IE unter Windows ausgeführt wird, können Sie stattdessen WinHTTP verwenden, um eine Option festzulegen, um dieses Verhalten zu verhindern. Dies ist jedoch eine sehr einschränkende Lösung.