我正在使用节点并在他授权后尝试重定向客户端。出于这个原因,我在客户端使用了使用 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 取自 here how to implement login auth in node.js(而不是 user_id 我使用的是用户名;这不是问题)。
也许我不知道如何正确处理这个 ajax 调用。我打印了一些控制台消息,服务器一直到 res.send('如果您正在查看此页面...') 但是,客户端上没有任何反应。然后,当我按下 control-C 来终止服务器时,会弹出警报窗口。同时,我可以看到成功传递的函数可以有参数(现在猜测:errorCode、errorString、otherData,也许更多)。
那么我做错了什么?