Узнайте, где JQuery ajax запрос перенаправляется к

Таким образом - я имею этот запрос ajax, вижу-. Светлый, приблизительно 6 футов высотой, похож на это:

$.ajax({
    url: 'http://example.com/makeThing',
    dataType: 'html',
    type: 'POST',
    data: {
        something:someotherthing
    },
    complete: function(request, status) {
        console.log("headers=" + request.getAllResponseHeaders(););
    }
});

То, что происходит, - то, что запрос к '/makeThing' возвращает 302 перенаправления второму url:'getThing/abc123'. Все, что я хочу сделать, узнают то, что тот второй URL (программно - это будет отличаться, каждый раз, поэтому просто регистрируясь в поджигателе не помогает мне). Я попытался установить вертикально заголовки ответа, которые возвращаются к 'полному' обратному вызову, но это просто дает мне, что возвратилось по второму запросу.

Ограничения:-I не имеют никакого контроля над сервером, на котором это работает - просто js. - может переключить платформы, если я имею к (додзе? прототип?)

Идеально, я сделал бы своего рода запрос только для заголовка к/makeThing для обнаружения то, что URL перенаправления путем получения просто заголовков начальных 302 ответов.

Сбой этого (так как jQuery автоследует за перенаправлениями и, кажется, не имеет способ ступить промежуточный запросы), я добираюсь, получает заключительный ответ и использует его, чтобы так или иначе получить URL от... чего-то? Объект запроса, возможно?

TLDR: Отправление ajax запроса. Платформа автоследует за получающимися 302 перенаправлениями. Как я выясняю, где это перенаправило к?

РЕДАКТИРОВАНИЕ, Разъяснение: заключительный URL будет отличаться, каждый раз - звонящий 'makeThing' заставляет сервер создавать то, что после этого размещается в 'getThing/abc123'

11
задан Fishtoaster 8 July 2010 в 02:58
поделиться

3 ответа

Почему бы вам просто не вставить URL 'http://example.com/makeThing' в ваш браузер и посмотреть, где вы окажетесь?

0
ответ дан 3 December 2019 в 11:20
поделиться

Если возможно, попросите ваш сервер установить заголовок на этих страницах (целевые страницы, а не перенаправляющие), например, установите заголовок "current-location" , тогда вы можете сделать это:

$.ajax({
    url: 'http://example.com/makeThing',
    dataType: 'html',
    type: 'POST',
    data: {
        something:someotherthing
    },
    complete: function(request, status) {
        var location = request.getResponseHeader("current-location");
    }
});

Да, это немного взломано, но поскольку перенаправление обрабатывается внутри объекта XmlHttpRequest (событие, к которому вы не можете получить доступ), вы не есть большой выбор.

Вы можете проверить спецификацию , это предполагаемое поведение для XmlHttpRequest:

Если источник URL, передаваемый заголовком Location, совпадает с источником XMLHttpRequest и перенаправлением не нарушает меры предосторожности в отношении бесконечного цикла, прозрачно следует перенаправлению, соблюдая правила событий запроса одного и того же источника.

4
ответ дан 3 December 2019 в 11:20
поделиться

Если вы загрузите firebug, затем откройте консоль, вы можете проследить, куда на самом деле идет запрос. Когда вы увидите, что ajax-запрос завершен, разверните этот элемент консоли, и вы увидите соответствующие запросы и все заголовки ответов.

0
ответ дан 3 December 2019 в 11:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: