Таким образом - я имею этот запрос 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'
Почему бы вам просто не вставить URL 'http://example.com/makeThing' в ваш браузер и посмотреть, где вы окажетесь?
Если возможно, попросите ваш сервер установить заголовок на этих страницах (целевые страницы, а не перенаправляющие), например, установите заголовок "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 и перенаправлением не нарушает меры предосторожности в отношении бесконечного цикла, прозрачно следует перенаправлению, соблюдая правила событий запроса одного и того же источника.
Если вы загрузите firebug, затем откройте консоль, вы можете проследить, куда на самом деле идет запрос. Когда вы увидите, что ajax-запрос завершен, разверните этот элемент консоли, и вы увидите соответствующие запросы и все заголовки ответов.