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