Хоча інші, хто відповів на це запитання, (на жаль) прав, що ця інформація прихована від нас браузером, я думав опублікувати обхідне рішення, яке я придумав:
Я сконфігурував свій серверний додаток для встановлення користувацького заголовка відповіді ( X-Response-Url
), що містить запитувану URL-адресу. Кожного разу, коли мій код ajax отримує відповідь, він перевіряє, чи xhr.getResponseHeader("x-response-url")
визначений, і в цьому випадку порівнює його з URL-адресою, через яку він спочатку запитував $.ajax()
. Якщо рядки різняться, я знаю, що було перенаправлення, а крім того, на яку адресу ми насправді прибули.
Це має недолік вимагати певної допомоги на стороні сервера, а також може зіпсуватися, якщо URL-адреса буде змінена (через проблеми з цитуванням / кодуванням тощо) під час туди-назад ... але для 99% випадків це, здається, виконану роботу.
На стороні сервера, моїм конкретним випадком була програма python, що використовує веб-фреймворк Pyramid, і я використав такий фрагмент:
import pyramid.events
@pyramid.events.subscriber(pyramid.events.NewResponse)
def set_response_header(event):
request = event.request
if request.is_xhr:
event.response.headers['X-Response-URL'] = request.url