Хотя другие люди, ответившие на этот вопрос, (к сожалению) правы в том, что эта информация скрыта от нас браузером, я решил опубликовать обходной путь, который я придумал:
Я настроил свое серверное приложение для установки настраиваемого заголовка ответа ( X-Response-Url
), содержащего запрошенный URL-адрес. Всякий раз, когда мой код ajax получает ответ, он проверяет, xhr.getResponseHeader("x-response-url")
определен ли он, и в этом случае сравнивает его с URL-адресом, который он изначально запрашивал $.ajax()
. Если строки различаются, я знаю, что было перенаправление, и, кроме того, какой URL мы на самом деле пришли.
У этого есть недостаток, заключающийся в том, что требуется некоторая помощь на стороне сервера, а также может возникнуть сбой, если 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