Возврат перенаправления в ответ на запрос XHR - PullRequest
136 голосов
/ 12 ноября 2008

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

Ответы [ 2 ]

196 голосов
/ 04 апреля 2010

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

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

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

Это был и мой опыт, и поведение , описанное в спецификации .

2016 Обновление: Время прошло, и хорошая новость заключается в том, что новый fetch () API специально призван предложить более точный контроль над тем, как перенаправления обрабатываются , с поведением по умолчанию, аналогичным XHR. Тем не менее, это работает только тогда, когда fetch () реализована изначально . Версии fetch () * Polyfill - основанные на XHR - по-прежнему имеют ограничения XHR . К счастью, поддержка родного браузера , похоже, неплохо завершается.

7 голосов
/ 12 ноября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...