Возврат перенаправления в ответ на запрос 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, но не уверен в этом.