Возвращение перенаправления в качестве ответа на запрос XHR
Что произойдет, если браузер получит ответ перенаправления на запрос ajax?
2 ответа:
что произойдет, если браузер получит ответ перенаправления на запрос ajax?
Если сервер отправляет редирект (он же ответ 302 плюс заголовок Location:), за редиректом автоматически следует браузер. Ответ на второй запрос (предполагая, что это также не другой редирект) - это то, что подвергается вашей программе.
фактически, у вас нет возможности определить, произошел ли ответ 302. Если 302 перенаправление приводит к 200, тогда ваша программа действует так же, как если бы исходный запрос привел непосредственно к 200.
Это был как мой опыт, так и поведение вызвано в спецификации.
обновление 2016: время прошло, и хорошая новость в том, что новый fetch () API это билд предложение более мелкозернистый контроль того, как обрабатываются перенаправления, С поведением по умолчанию, похожим на XHR. Тем не менее, это только работает там, где реализована функция fetch ()изначально. Polyfill версии fetch () - которые основаны на XHR -по-прежнему существуют ограничения используем XHR-это. К счастью, поддержка родного браузера кажется, завершается красиво.
The
ajax-request
будет следовать, что перенаправить afaik. Фактическое содержание (.responseText
,.responseXML
) будет содержимое со страницы, на которую вы перенаправлены.вы могли бы быть в состоянии перехватить перенаправление (
status-code
,location-header
) наreadyState
2 или 3, но не уверен в этом.