我在这里有一个很奇怪的问题,我认为这与Backbone.js路由有关。如何防止Backbone.js路由(或历史)自动将参数添加到GET请求?
在我们的移动应用程序中,有一个登录屏幕,执行AJAX-Post-Request(带有jQuery),它针对API运行。用户名,密码和第三个参数在POST主体中。这像一个魅力。
在Backbone.js开始做一些路由之后,奇怪的行为开始了。重新定向浏览器之后,(仅!)将用户名和密码作为参数列表发送给GET请求。
所以即
http://localhost:3000/#login
请求由于未知原因,成为
http://localhost:3000/?username=myuser&password=mypassword#login
请注意,是在GET请求新的参数不是POST体的100%的部分,因为savePassword参数丢失。另请注意,登录请求违背API(/ api/user/login),而不是登录屏幕的路由(/#登录)
我已经尝试了很多东西,所有的主干源代码分开,但仍然无法找到如何防止这种行为。
另一个通知:我只在移动设备上看到这个,所以在iOS上的UIWebView和Android上的WebView对象上。也许这个问题也涉及到移动...
我很高兴任何帮助,答案或提示,如何禁用此行为,并从这个怪异的URL获取用户名/密码。
编辑: 这是AJAX请求在洛
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);
}
}
});
}
你可以展示AJAX的请求后(使用jQuery)? –
用ajax代码编辑问题。 – nodepond
作为另一个选项,你可以使用jQuery.post()https://api.jquery.com/jquery.post/ –