Respostas:
O que acontece se o navegador receber uma resposta de redirecionamento para uma solicitação ajax?
Se o servidor enviar um redirecionamento (também conhecido como resposta 302 mais um cabeçalho Location:), o redirecionamento será automaticamente seguido pelo navegador. A resposta à segunda solicitação (assumindo que também não é outro redirecionamento) é o que está exposto ao seu programa.
De fato, você não tem a capacidade de detectar se uma resposta 302 ocorreu. Se o redirecionamento 302 levar a um 200, seu programa atuará de forma idêntica como se a solicitação original levasse diretamente a um 200.
Essa foi minha experiência e o comportamento mencionado nas especificações .
Atualização de 2016: o tempo passou e a boa notícia é que a nova API fetch () deve oferecer um controle mais refinado de como os redirecionamentos são tratados , com comportamento padrão semelhante ao XHR. Dito isto, ele só funciona onde fetch () é implementado nativamente . As versões do polyfill do fetch () - que são baseadas no XHR - continuam com as limitações do XHR . Felizmente, o suporte nativo ao navegador parece estar bem completo.
O ajax-request
seguirá que redirecionar afaik. O conteúdo real ( .responseText
, .responseXML
) será o conteúdo da página para a qual você é redirecionado.
Você pode interceptar o redirecionamento ( status-code
, location-header
) em readyState
2 ou 3, mas não tem certeza.
getAllResponseHeaders()
é igual.