Czy można zapobiec przeglądaniu przekierowań przeglądarki podczas wysyłania XMLHttpRequest-s (tj. Aby odzyskać kod przekierowania i samemu go obsłużyć)?Zapobieganie przekierowaniu Xmlhttprequest
Odpowiedz
Nie według the W3C standard for the XMLHttpRequest object (podkreślenie dodane):
Jeśli odpowiedź jest przekierowanie HTTP:
Jeśli pochodzenie URL wywieranym przez nagłówek Location to samo pochodzenie z XMLHttpRequest origin i przekierowanie nie naruszają nieskończonych zabezpieczeń pętli, przezroczyście postępuj zgodnie z przekierowaniem podczas obserwowania reguły zdarzeń tego samego pochodzenia.
Byli considering go dla przyszłych wersjach:
Ta specyfikacja nie zawiera następujące funkcje, które są uważane za przyszłej wersji ta specyfikacja:
- Właściwość do wyłączenia następujących przekierowań;
ale specyfikacja latest nie wspomina o tym.
Nie ma ciebie, nie ma żadnego miejsca w API narażone przez XMLHttpRequest, który pozwala na przesłonięcie domyślnego zachowania automatycznego 301 lub 302.
Jeśli klient uruchamia program IE w systemie Windows, można zamiast niego użyć opcji WinHTTP, aby zablokować to zachowanie, ale jest to bardzo ograniczające rozwiązanie.
Możesz użyć właściwości responseURL
, aby uzyskać miejsce docelowe przekierowania lub sprawdzić, czy odpowiedź została ostatecznie pobrana z zaakceptowanej przez Ciebie lokalizacji.
To oczywiście oznacza, że wynik jest pobrany, ale przynajmniej możesz uzyskać niezbędne informacje na temat miejsca docelowego przekierowania i na przykład określić warunki, w których chcesz odrzucić odpowiedź.
Nowy Fetch API obsługuje różne tryby postępowania przekierowania: follow
, error
, a manual
, ale nie mogę znaleźć sposób, aby zobaczyć nowy adres URL lub kod statusu przekierowania, gdy został odwołany. Wystarczy zatrzymać sam przekierowanie, a następnie wygląda na błąd (pusta odpowiedź). Jeśli to wszystko, czego potrzebujesz, jesteś dobry.
Należy również pamiętać, że żądania przesłane za pośrednictwem tego interfejsu API nie podlegają anulowaniu
yet.
Teraz są teraz are.
Jak dla XMLHttpRequest można HEAD
serwer i sprawdzić, czy adres URL nie zmieniło:
var http = new XMLHttpRequest();
http.open('HEAD', '/the/url');
http.onreadystatechange = function() {
if (this.readyState === this.DONE) {
console.log(this.responseURL);
}
};
http.send();
Nie dostaniesz kod stanu, ale znajdzie nowy adres URL bez pobierania całej strony od to.
Czasami użycie opcji "OPCJE" może być lepszym wyborem, zresztą działa tylko w ogólnym celu itp. Administrator skonfigurował przekierowanie całej witryny/schematu, na przykład HTTP -> HTTPS –
- 1. Zapobieganie przekierowaniu formularza LUB odświeżanie przy wysyłaniu?
- 2. Zapobieganie przekierowaniu do logowania do Spring Security
- 3. po przekierowaniu w Yii2
- 4. Zapobieganie automatycznemu logowaniu przy rejestracji w woocommerce i przekierowaniu na stronę logowania?
- 5. Jak mogę zapobiec przekierowaniu Spring MVC?
- 6. Kod odpowiedzi HTTP po przekierowaniu
- 7. Magento traci wiadomości po przekierowaniu
- 8. xargs: zmienne podstawienie po przekierowaniu
- 9. Zachowywanie komunikatów JSF po przekierowaniu
- 10. Chrome XmlHttpRequest Wiszący
- 11. JavaScript XMLHttpRequest "NetworkError"
- 12. Jak uzyskać odpowiedź XMLHttpRequest?
- 13. Chrome XMLHttpRequest odniesienia
- 14. NETWORK_ERROR: XMLHttpRequest Wyjątek 101
- 15. Firebase Synchronous XMLHttpRequest Nieaktualne
- 16. XMLHTTPRequest responseBody vs responseText
- 17. XMLHttpRequest 206 Częściowa zawartość
- 18. Limit czasu XMLHttpRequest
- 19. jQuery Błąd XMLHttpRequest
- 20. jQuery XmlHttpRequest Cache-Control ignorowane
- 21. XMLHttpRequest zmienia POST do OPCJA
- 22. Jak utworzyć opakowanie/proxy XMLHttpRequest?
- 23. Czego mi brakuje w XMLHttpRequest?
- 24. Jak uzyskać postęp z XMLHttpRequest
- 25. XMLHttpRequest: Obsługa przeglądarki dla sendAsBinary?
- 26. Django: request.user nie został ustawiony po przekierowaniu
- 27. Testy funkcjonalne wiadomości flash po przekierowaniu
- 28. MVC4 nie używaj układu głównego w przekierowaniu
- 29. Wyświetl link iTunes wewnątrz WebView (zapobiec przekierowaniu)?
- 30. Indeks sesji PHP nieokreślony po przekierowaniu nagłówka?
Co jest niedorzeczne, gdy przezroczyste przekierowanie obejmuje zastąpienie niektórych nagłówków HTTP, które zostały ustawione w pierwotnym żądaniu. W szczególności, jeśli nagłówek "Accept" został ustawiony na określony typ zawartości, Firefox nie umieści tego nagłówka podczas wykonywania przekierowania (co sprawia, że trudniej jest opracować w pełni usługi sieci Web oparte na REST, które używają tego nagłówka ... narzekać). – ruquay
Trochę więcej poszukiwań przyniosło mi ten dość stary raport o błędzie: https://bugzilla.mozilla.org/show_bug.cgi?id=401564 – ruquay
Zgadzam się, wada całkowicie rediculus. – Rasive