Обработка перенаправления Ajax

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

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

Спасибо.


person Rob Wilkerson    schedule 12.11.2010    source источник


Ответы (2)


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

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

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

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

person Nick Craver    schedule 14.11.2010

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

person Amir Raminfar    schedule 12.11.2010