2011-11-08 17 views
13

Istnieje strona (URL), I poprosić go przez XMLHttpRequest, ale nie otrzymuję odpowiedzi od żądanego adresu URL, to kierując wniosek do innej strony,Jak uzyskać adres URL odpowiedzi w XMLHttpRequest?

zainteresowanie --->page.php
uzyskanie odpowiedzi od>skierpage.php

i pytanie brzmi, w jaki sposób mogę uzyskać adres URL odpowiedzi? (directedpage.php w przykładzie)

Odpowiedz

24

Końcowy URL (po wykonaniu wszystkich przekierowań) jest dostępny w responseURL attribute instancji XMLHttpRequest. Ta funkcja jest nowa i obsługiwana tylko w przeglądarce Firefox 32 stabilna we wrześniu 2014 roku [ref] i Chrome 37.0.2031.0 stabilna w sierpniu 2014 roku [ref] (i prawdopodobnie także Opera 24). responseURL nie jest (jeszcze) obsługiwane w IE 11 lub Safari 7 i starszych przeglądarkach. W przypadku tych przeglądarek poprzednia odpowiedź nadal jest prawdziwa:

XMLHttpRequest automatycznie wykonuje przekierowania bez zapisywania obsługiwanych adresów URL w usłudze. Nagłówek Location nie może być odtworzony poprzez .getResponseHeader().

Referencje:

+0

OK, ale czy ktoś wie dlaczego? Bezpieczeństwo ? Który atak powinien być dostępny z adresem URL odpowiedzi? (Podanie adresu URL odpowiedzi tylko wtedy, gdy adres URL odpowiedzi jest tego samego pochodzenia niż oryginalny adres URL) –

+0

@JulienPalard [Specyfikacja] (http://www.w3.org/TR/XMLHttpRequest/#infrastructure-for-the-send() -metod) wymaga, aby przekierowania były przejrzyste. –

+0

@RobW: Nie rozumiem, jeśli mam to 'A = 302-B = 302-> C = 302-> A = 200'. Jaką odpowiedźURURL zwróci? ᴜʀʟ z C lub A? – user2284570

Powiązane problemy