【发布时间】:2016-05-30 16:17:39
【问题描述】:
我有一个非常奇怪的问题,我认为这与 Backbone.js 路由有关。
在我们的移动应用程序中,有一个登录屏幕,它执行针对 API 运行的 AJAX-Post-Request(使用 jQuery)。用户名、密码和第三个参数在 POST 正文中。这就像一个魅力。
在 Backbone.js 开始做一些路由之后,奇怪的行为开始了。重定向浏览器后,(仅!)用户名和密码作为参数列表发送到 GET 请求。
所以请求即
http://localhost:3000/#login
不知什么原因变成了
http://localhost:3000/?username=myuser&password=mypassword#login
请注意,GET 请求中的新参数不是 POST 正文的 100% 部分,因为缺少 savePassword 参数。另请注意,登录请求与 API (/api/user/login) 相违背,而不是登录屏幕的路由 (/#login)
我已经尝试了很多东西,也将所有主干源代码分开,但仍然找不到如何防止这种行为。
另一个通知:我只在移动设备上看到这个,所以在 iOS 上的 UIWebView 和 Android 上的 WebView-object 中。可能这个问题也和手机有关……
我很高兴获得任何帮助、答案或提示,以及如何禁用此行为并从这个怪异的 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-Post-Request(使用 jQuery)吗?
-
用 ajax 代码编辑了问题。
-
作为另一个选项,您可以使用 jQuery.post() api.jquery.com/jquery.post
标签: javascript android jquery ios backbone.js