it-swarm.com.de

302 FOUND in JavaScript abfangen

Ich verwende jQuery, um eine AJAX POST an meinen Server zu senden, der eine HTTP-Antwort mit dem Status 302 zurückgeben kann. Dann sendet JavaScript einfach eine GET-Anfrage an diese URL. Ich möchte den Benutzer in dieser Antwort auf die URL umleiten. Ist dies möglich?

35

Die akzeptierte Antwort funktioniert aus den angegebenen Gründen nicht. Ich habe einen Kommentar mit einem Link zu einer Frage gepostet, die einen Hack beschreibt, um das Problem der transparenten Handhabung des 302 durch den Browser zu umgehen:

So verwalten Sie eine Umleitungsanforderung nach einem jQuery Ajax-Aufruf

Es ist jedoch ein bisschen schmutzig und nachdem ich viel herumgebuddelt habe, fand ich, was ich für eine bessere Lösung halte - benutze JSON . In diesem Fall können Sie alle Antworten auf Ajax-Anforderungen mit dem Code 200 versehen und im Hauptteil der Antwort eine Art JSON-Objekt hinzufügen, das Ihr Ajax-Antworthandler dann in geeigneter Weise verwenden kann.

22
Steg

Ich glaube nicht. Das W3C besagt, dass HTTP-Weiterleitungen mit bestimmten Statuscodes, einschließlich 302, transparent befolgt werden müssen. Zitiert unten:

Handelt es sich bei der Antwort um eine HTTP-Umleitung (Statuscode 301, 302, 303 oder 307), MUSS diese transparent befolgt werden (es sei denn, sie verstößt gegen Sicherheits- oder Endlosschleifen-Vorsichtsmaßnahmen). Jeder andere Fehler (einschließlich eines 401) MUSS das Objekt veranlassen, diese Fehlerseite als Antwort zu verwenden.

Als Experiment habe ich versucht, Ajax-Anforderungen von verschiedenen Browsern (Firefox 3.5, Chrome, IE8, IE7, IE6) an einen Server zu senden, der einen 302-Statuscode hat und den Status im Anforderungsobjekt des Browsers anzeigt. In jedem Fall zeigte es sich als 200.

6
Elias Zamaria

In meinem Problem Grund war:

ich habe localhost/Home/Test addres zum Testen der Seite verwendet. Aber Ajax Request Code mit 127.0.0.1/Home/AjaxRequest für URL-Parameter. Wenn die URLs unterschiedlich sind, tritt dieser Fehler auf.

vielleicht hilft es jemandem :)

2
Orhaan