In einem AJAX-Aufruf wird 302 nicht befolgt
Ich bin mit jQuery 1.6.2 zu machen, ein POST AJAX-request auf eine Seite auf der gleichen domain. Die Seite hat einen 302 redirect zu einer anderen Seite.
Nun, auf meiner lokalen Maschine diese Arbeit in Ordnung, aber auf unsere Produktions-server, die Umleitung noch nie gefolgt und in den Chrome-inspector der Antrag wird gesagt, 'abgebrochen'.
Wenn ich Sie besuchen die gleiche Seite, ohne über javascript, funktioniert alles einwandfrei, und als ich sagte das AJAX funktioniert auf meinem lokalen Rechner aber nicht auf dem Produktionsserver.
Weiß jemand, was könnte dies verursachen?
Gibt es einige Unterschiede zwischen den Servern (OS X, Apache2, PHP5.3.6, HTTP auf den lokalen Rechner, Ubuntu, Lighttpd, PHP5.3.3, HTTPS auf die Produktion), aber keine, die zu mir sollte keinen Unterschied machen.
InformationsquelleAutor der Frage Johan | 2011-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Herausstellt, ein Fehler in der redirect-code verursacht, die Umleitung zu gehen, um http://, während die Seite, die angefordert wurde: https://. Das macht den browser ablehnen, Folgen Sie der Umleitung.
InformationsquelleAutor der Antwort Johan
folgenden Fragen auf Ihre Antwort. finden Sie die Antwort von unten links.
Fang 302 FOUND in JavaScript
Wie man ein redirect-Anforderung nach einen jQuery-Ajax-call
InformationsquelleAutor der Antwort Chamika Sandamal
Ich denke, dass das ein Serverseitiges Problem, und nicht client-Seite. Der browser ist richtig, nicht zu Folgen-Umleitungen zu
http
wenn es an die ajax-Anfrage durchhttps
, als wäre das eine Sicherheitslücke.Merkte ich, ich war mit relative Wege, wie
HttpResponseRedirect('/path/to/')
. Auf eine Schicht, die url wurde vorangestellt, mit derhttp://
Präfix und das war, was der browser empfangen:http://example.com/path/to/
Müssen Sie sicherstellen, dass die
Location
geschickt bekommt in der response-header mit einem vollständigen Pfad, einschließlich derhttps://
.InformationsquelleAutor der Antwort Augusto Men
Basiert auf diese Antwort: https://stackoverflow.com/a/8752354/698289 fand ich den folgenden code, um sehr nützlich sein:
Dann stellen Sie nur JSON wie die folgenden:
Und die
ajaxComplete
wird, stellen Sie sicher, dass die Umleitung des Browsers.Bewusst sein, dass
$.ajax('complete')
löst NACH$.ajax('success')
oder$.ajax('error')
InformationsquelleAutor der Antwort DanH