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

124

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

Теги:
http

2 ответа

171
Лучший ответ

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

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

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

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

  • 38
    Интересно, что я пришел к этому, потому что я нахожусь в ситуации, когда перенаправление явно не выполняется ... это происходит, когда перенаправление нарушает ту же политику происхождения.
  • 3
    @ Гас, что, вероятно, логично
Показать ещё 8 комментариев
7

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

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

  • 0
    Нет, все эти штаты имеют одинаковый статус. Даже значение getAllResponseHeaders() равно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню