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