Возвращение перенаправления в качестве ответа на запрос XHR


Что произойдет, если браузер получит ответ перенаправления на запрос ajax?

2 127

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, но не уверен в этом.