Ich habe ein sehr seltsames Problem hier, dass ich denke, dass etwas mit dem Backbone.js Routing zu tun hat.Wie verhindert man, dass Backbone.js routing (oder Verlauf) automatisch Parameter zur GET-Anfrage hinzufügt?
In unserer mobilen App gibt es einen Login-Bildschirm, der eine AJAX-Post-Anfrage (mit jQuery) ausführt, die gegen eine API läuft. Benutzername, Passwort und ein dritter Parameter befinden sich im POST-Body. Das funktioniert wie ein Zauber.
Das seltsame Verhalten tritt ein, nachdem Backbone.js beginnt, einige Routing zu tun. Nach dem Umleiten des Browsers werden (nur!) Der Benutzername und das Passwort als Parameterliste an die GET-Anfrage gesendet.
So ist die Anfrage also
http://localhost:3000/#login
aus unbekanntem Grund wird
http://localhost:3000/?username=myuser&password=mypassword#login
Bitte beachten Sie, dass die neuen Parameter in der GET-Anfrage noch nicht zu 100% Teil des POST-Körper, weil Der savePassword-Parameter fehlt. Beachten Sie auch, dass die Login-Anfrage gegen die API geht, (/ api/user/login), nicht die Route des Login-Bildschirms (/ # login)
Ich habe schon eine Menge Dinge ausprobiert, nehme auch an alle Backbone-Quellcode auseinander, aber immer noch nicht finden, wie man dieses Verhalten verhindert.
Noch ein Hinweis: Ich sehe das nur auf Handy, also im UIWebView auf iOS und im WebView-Objekt auf Android. Vielleicht hängt dieses Problem auch mit dem Handy zusammen ...
Ich bin sehr glücklich für jede Hilfe, Antworten oder Hinweise, wie Sie dieses Verhalten deaktivieren und den Benutzernamen/das Passwort aus dieser freakin URL erhalten.
Edited: Dies ist die AJAX-Request für loggin in
login: function(username, password, savePassword, successcallback, errorcallback) {
$.ajax({
method: 'POST',
dataType: 'json',
url: config.api_base_url + 'user/login',
data: {
username: username,
password: password,
savePassword: savePassword
},
success: function(data, response, xhr) {
app.auth_token = xhr.getResponseHeader('Authtoken');
$.cookie('auth_token', app.auth_token);
if (successcallback) {
successcallback();
}
},
error: function(data) {
if (errorcallback) {
errorcallback(data);
}
}
});
}
Können Sie die AJAX-Post-Request zeigen (mit jQuery)? –
Bearbeitete die Frage mit dem Ajax-Code. – nodepond
als eine andere Option können Sie jQuery.post() verwenden https://api.jquery.com/jquery.post/ –