2010-11-12 6 views
6

Ich stieß auf eine Situation, die ich noch nie zuvor angesprochen hatte. Ich habe einen Kunden, der eine Ajax-Anfrage an eine URL stellen muss. Aus internen Gründen leitet diese URL zu einer anderen URL um, auf deren Statuscode zugegriffen werden muss. Wird diese Art von Mehrfachanforderungsszenario nativ von Ajax-Anfragen gehandhabt?Ajax Redirection Handling

Ein schneller Test mit jQuery scheint die 302 zu behandeln, die Umleitung und den Inhalt der Zielseite (Ich brauche nur den Statuscode in der Produktion, aber der Inhalt ist, was "beweist" die richtige Seite ist zugegriffen wird), aber ich kann keinen Hinweis darauf finden, dass ich davon ausgehen kann, dass dies universell funktioniert. Ich weiß nicht, welche, wenn überhaupt, Bibliothek der Client verwenden wird. Darüber hinaus verwenden andere Clients wahrscheinlich dieselbe URL in der Zukunft und es muss auf die gleiche Weise behandelt werden.

Danke.

Antwort

10

Sie können erwarten, dass dies universell funktioniert, da es nicht jQuery die Handhabung ist. Dies ist das angegebene Verhalten des zugrunde liegenden XmlHtpRequest Browser-Objekts, das alle Bibliotheken für AJAX-Aufrufe verwenden.

You can find the behavior specified here by the W3C:

Wenn die origin des URL von Location-Header übermittelt same origin mit dem XMLHttpRequest origin ist und die Umleitung Endlosschleife Vorsichtsmaßnahmen nicht verletzen, transparent die Umleitung folgen, während die same-origin request event rules beobachten.

Ich habe das relevanteste bisschen hier betont, solange es nicht same-origin policy Regeln (es sollte nicht auf derselben Domain) nicht verletzt, die XmlHttpRequest wird der Inhalt der letzten Seite bekommen sie umgeleitet wird, um . Mit anderen Worten, es ist das Verhalten, das Sie jetzt mit jQuery sehen ... es ist einfach nicht jQuery.

+0

Perfekt, Nick. Das ist _exactly_ was ich zu lernen hoffte. –

0

Wenn Sie Firebug betrachten, können Sie tatsächlich die Weiterleitung sehen. Ich denke du hast recht, dass du dich nicht auf jeden Browser verlassen kannst. Aber meine Neigung würde sein, dass die neuesten Browser die http-Verbindung für Sie übernehmen und die Umleitung durchführen.