Что произойдет, если браузер получит ответ перенаправления на запрос ajax?
Возврат перенаправления в ответ на запрос XHR
Ответ 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, но не уверены в этом.