何らかの理由で、ログインが完了すると/ blogにリダイレクトできません。ログインコントローラには次のものがあります。
module.exports = {
post: function(req, res) {
var login = req.body['login'];
if (login && req.body['login']['password'] == "password") {
console.log('Granted access');
res.send({redirect: '/blog'});
}
else {
console.log('wrong password');
res.redirect('back');
}
}
};
Jquery ajax
$(document).ready ->
$('#login-button').click () ->
$.ajax
url: '/login'
type: 'POST'
data: $('#Password').serialize()
dataType: 'json'
success: (data, textStatus, jqXHR) ->
if typeof data.redirect == 'string'
window.location = data.redirect
作業コードに更新
AJAXの後にリダイレクトを行うことはできません。 Javascriptで自分で行う必要があります。
サーバ
post: function(req, res) {
var login = req.body['login'];
app.use(express.bodyParser());
if (login && req.body['login']['password'] == "tom") {
var loginPassword = req.body['login']['password'];
console.log(loginPassword);
console.log('Granted access');
res.send({redirect: '/blog'});
}
...
}
クライアント
$(document).ready ->
$('#login-button').click () ->
$.ajax
url: '/login'
type: 'POST'
data: $('#Password').serialize()
dataType: 'json'
success: (data, textStatus, jqXHR) ->
if typeof data.redirect == 'string'
window.location = data.redirect
これは動作するはずです。
POSTはGETにリダイレクトされます。 POSTにPOSTにリダイレクトすることはできません。転送することはできますが、それは奇妙です。ログインしているユーザーとログインしていないユーザーを処理するロジックをGETルートに追加することをお勧めします。
また、304はおそらく、301を使用したために応答がブラウザーによってキャッシュされていることを意味します(永続的なリダイレクト、ログイン時に非常に悪いなど。302を使用します)。