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