Ajax Redirection Handling - PullRequest
       9

Ajax Redirection Handling

6 голосов
/ 12 ноября 2010

Я столкнулся с ситуацией, с которой мне никогда не приходилось сталкиваться. У меня есть клиент, которому нужно сделать ajax-запрос к URL. По внутренним причинам этот URL перенаправляется на другой URL, код состояния которого должен быть доступен. Этот тип сценария с несколькими запросами изначально обрабатывается Ajax-запросами?

Быстрый тест с использованием jQuery, кажется, обрабатывает 302, выполняет перенаправление и возвращает содержимое целевой страницы (мне понадобится только код состояния в производственном процессе, но это то, что «подтверждает» правильную страницу доступ), но я не могу найти никаких признаков того, что я могу ожидать, что это будет работать повсеместно. Я не знаю, какую библиотеку будет использовать клиент. Более того, другие клиенты, вероятно, будут использовать этот же URL-адрес в будущем, и его необходимо обрабатывать аналогичным образом.

Спасибо.

Ответы [ 2 ]

10 голосов
/ 14 ноября 2010

Вы можете ожидать, что это будет работать повсеместно, поскольку обработка выполняется не jQuery. Это заданное поведение базового объекта браузера XmlHtpRequest, который все библиотеки используют для вызовов AJAX.

Вы можете найти поведение, указанное здесь W3C :

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

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

0 голосов
/ 12 ноября 2010

Если вы посмотрите на firebug, вы действительно сможете увидеть, как происходит перенаправление. Я думаю, что вы правы, что вы не можете зависеть от этого для каждого браузера. Но я склоняюсь к тому, что самые последние браузеры будут обрабатывать http-соединение для вас и выполнять перенаправление

...