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

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

Ответ 1

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

Если сервер отправляет перенаправление (например, ответ 302 плюс заголовок Location:), перенаправление автоматически сопровождается браузером. Ответ на второй запрос (при условии, что он также не является другим перенаправлением) - это то, что доступно вашей программе.

Фактически, у вас нет возможности определить, произошел ли ответ 302. Если перенаправление 302 приводит к 200, то ваша программа действует одинаково, как если бы исходный запрос приводил непосредственно к 200.

Это был и мой опыт, и поведение fetch() API 'd предложить более тонкое управление обработкой переадресаций, с поведением по умолчанию, аналогичным XHR. Тем не менее, он работает только там, где fetch() реализуется изначально. Polyfill версии fetch(), которые основаны на XHR- continue для ограничения XHR. К счастью, поддержка родного браузера, кажется, хорошо округляется.

Ответ 2

ajax-request будет следовать за перенаправлением afaik. Фактический контент (.responseText, .responseXML) будет содержимым со страницы, на которую вы перенаправлены.

Возможно, вы сможете перехватить перенаправление (status-code, location-header) на readyState 2 или 3, но не уверены в этом.