Frage

Ist es möglich, den Browser zu verhindern, dass Umleitungen folgenden wenn XMLHttpRequest-s sendet (das heißt die Umleitung Statuscode zurück zu bekommen und zu handhaben es selbst)?

War es hilfreich?

Lösung

Nicht nach der W3C-Standard für das XMLHttpRequest-Objekt (Hervorhebung hinzugefügt):

  

Wenn die Antwort eine HTTP-Umleitung:

     
    

Wenn der Ursprung der von den Location-Header übermittelt URL gleicher Ursprung     mit dem XMLHttpRequest Ursprung und die     Umleitung nicht unendlich verletzen     Schleife Vorsichtsmaßnahmen, transparent     folgen Sie der Umleitung unter Beobachtung     die gleiche Ursprungsanforderung Ereignisregeln.

  

Sie waren es für eine zukünftige Version Berücksichtigung

  

Diese Spezifikation umfasst nicht   die folgenden Merkmale auf, die sein, sind   als für eine zukünftige Version von   diese Spezifikation:

     
      
  • Property folgende Umleitungen zu deaktivieren;
  •   

aber die neueste Spezifikation nicht mehr erwähnt dies.

Andere Tipps

Der neue API Fetch verschiedenen Modi der Umleitung Handhabung unterstützt : follow, error und manual, aber ich kann die neue URL oder den Statuscode anzuzeigen, wenn die Umleitung abgebrochen wurde nicht einen Weg finden. Sie können nur die Umleitung selbst, stoppen und dann sieht es aus wie ein Fehler (leer Antwort). Wenn das alles, was Sie brauchen, sind Sie gut zu gehen. Auch Sie sollten sich bewusst sein, dass die Anfragen über diese API gemacht sind nicht stornierbar noch . Sie sind jetzt.

Wie für XMLHttpRequest, können Sie den Server HEAD und überprüfen, ob 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 werden nicht den Statuscode bekommen, werden aber die neue URL finden, ohne dass die ganze Seite aus dem Download.

Sie können responseURL Eigenschaft verwenden, um die Umleitung Ziel zu gelangen oder überprüfen, ob die Antwort von einem Ort schließlich geholt wurden Sie akzeptieren.
Das bedeutet natürlich das Ergebnis geholt wird sowieso, aber zumindest können Sie die notwendigen Informationen über die Umleitung Ziel gelangen und zum Beispiel Bedingungen erkennen, wenn Sie möchten, um die Antwort verwerfen.

Nein, Sie gibt es keinen Platz in der von XMLHttpRequest ausgesetzt API, die Sie seine Standardverhalten automatisch nach einer 301 oder 302 außer Kraft setzen können.

Wenn der Client IE auf Windows läuft, dann können Sie WinHTTP verwenden stattdessen eine Option zu setzen, dass das Verhalten zu verhindern, aber das ist eine sehr einschränkende Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top