私はノードを使用しており、クライアントが自分自身を承認した後にクライアントをリダイレクトしようとしています。このため、クライアント側で ajax を使用して POST メソッドを使用しています。これは次の形式です。
$.ajax({
type: "POST",
url: '/login',
dataType: "json",
async: false,
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa(credentials.username + ":" + credentials.password));
},
data: credentials,
success: function () {
window.alert("Success! (whatever that means)");
}
});
次に、サーバー側でコマンドを使用して実際のページにリダイレクトしようとしています
app.get('/login', loginInternalApp);
app.post('/login', function (req, res){
var postContents = req.body;
req.session.username = postContents.username;
res.redirect('/my_secret_page');
});
app.get('/my_secret_page', checkAuth, function (req, res) {
console.log("sending the message!");
res.send('if you are viewing this page it means you are logged in');
res.end();
});
checkAuth はここから取られました node.js でログイン認証を実装する方法(user_id の代わりにユーザー名を使用しています。それは問題ではありません)。
おそらく、私が知らないのは、この ajax 呼び出しを正しく処理する方法です。私はいくつかのコンソール メッセージを出力し、サーバーは res.send('このページを表示している場合...') まで進みますが、クライアントでは何も起こりません。次に、control-C を押してサーバーを終了すると、警告ウィンドウがポップアップします。一方、成功時に渡された関数にはパラメーターを指定できることがわかります (推測: errorCode、errorString、otherData など)。
それで、私は何を間違っていますか?