ここでは非常に奇妙な問題があります。私はBackbone.jsルーティングと関係があると思います。Backbone.jsルーティング(または履歴)が自動的にGET要求にパラメータを追加するのを防ぐには?
私たちのモバイルアプリケーションには、APIに対して実行されるAJAX-Post-Request(jQuery付き)を実行するログイン画面があります。ユーザー名、パスワード、および第3パラメーターはPOST本体にあります。これは魅力のように機能します。
Backbone.jsがルーティングを開始した後、奇妙な動作が発生します。ブラウザをリダイレクトした後、(!のみ)ユーザ名とパスワードは、GETリクエストのパラメータリストとして送信されます。
だから、未知の理由のため
http://localhost:3000/#login
すなわち要求がGET要求の新しいパラメータがあるため、POST-体の100%の一部ではないことを、
http://localhost:3000/?username=myuser&password=mypassword#login
は注意してくださいになりsavePasswordパラメータがありません。ログイン画面(/#ログイン)の経路ではなく、API(/ api/user/login)に対抗することにも注意してください。
私はすでにたくさんのことを試しています。すべてのバックボーン - ソースコードは離れていますが、この動作を防ぐ方法はまだ見つかりません。
別の通知:これはモバイルでのみ表示されるため、iOSのUIWebViewとAndroidのWebViewオブジェクトに表示されます。おそらく、この問題はモバイルにも関係しています...
この動作を無効にし、このフリークインURLからユーザー名/パスワードを取得する方法については、何か助け、回答またはヒント、非常にうれしいです。
編集: これはでlogginための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);
}
}
});
}
あなたは(jQueryを使って)AJAXポストリクエストを表示することができますか? –
ajaxコードで質問を編集しました。別のオプションとして – nodepond
を使用すると、jQuery.post()を使用できます。https://api.jquery.com/jquery.post/ –