Risposte:
Non conforme allo standard W3C per l'oggetto XMLHttpRequest (enfasi aggiunta):
Se la risposta è un reindirizzamento HTTP:
Se l'origine dell'URL trasmessa dall'intestazione Location è la stessa origine dell'origine XMLHttpRequest e il reindirizzamento non viola le precauzioni del ciclo infinito, seguire in modo trasparente il reindirizzamento osservando le regole dell'evento di richiesta della stessa origine.
Lo stavano considerando per una versione futura:
Questa specifica non include le seguenti caratteristiche che vengono prese in considerazione per una versione futura di questa specifica:
- Proprietà per disabilitare i seguenti reindirizzamenti;
ma l' ultima specifica non lo menziona più.
Il nuovo Fetch API supporta diverse modalità di gestione di reindirizzamento: follow
, error
, e manual
, ma non riesco a trovare un modo per visualizzare il nuovo URL o il codice di stato quando il reindirizzamento è stato annullato. Puoi semplicemente interrompere il reindirizzamento stesso e quindi sembra un errore (risposta vuota). Se è tutto ciò di cui hai bisogno, sei a posto. Inoltre si dovrebbe essere consapevoli del fatto che le richieste effettuate tramite questa API non sono annullabile ancora . Adesso lo sono .
Per quanto riguarda XMLHttpRequest, puoi controllare HEAD
il server e controllare se l'URL è cambiato:
var http = new XMLHttpRequest();
http.open('HEAD', '/the/url');
http.onreadystatechange = function() {
if (this.readyState === this.DONE) {
console.log(this.responseURL);
}
};
http.send();
Non otterrai il codice di stato, ma troverai il nuovo URL senza scaricare l'intera pagina da esso.
OPTIONS
può essere una scelta migliore, comunque funziona solo per scopi non generali, ecc. L'amministratore aveva configurato il reindirizzamento dell'intero sito / schema, come HTTP -> HTTPS
Puoi utilizzare la responseURL
proprietà per ottenere la destinazione di reindirizzamento o verificare se la risposta è stata infine recuperata da una posizione che accetti.
Ciò ovviamente significa che il risultato viene comunque recuperato, ma almeno puoi ottenere le informazioni necessarie sulla destinazione del reindirizzamento e, ad esempio, rilevare le condizioni in cui desideri scartare la risposta.
No, non c'è alcun posto nell'API esposto da XMLHttpRequest che ti permetta di sovrascrivere il suo comportamento predefinito di seguire automaticamente un 301 o 302.
Se il client esegue IE su Windows, puoi utilizzare WinHTTP invece per impostare un'opzione per impedire quel comportamento, ma questa è una soluzione molto limitante.