res.redirect from POST res.redirect from POST express express

res.redirect from POST


You can't make a redirection after an AJAX. You need to do it yourself in Javascript.

server

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'});     }     ...}

client

$(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

This should work.


POSTs are redirected to GETs. You can't redirect to a POST to a POST; you could forward it but that would be weird. I recommend adding logic to your GET route that will handle a logged in versus not logged in user.

Also, 304 likely means your response is being cached by your browser because you used a 301 (permanent redirect, very bad on login, etc.; use 302).


You are missing return:

return res.redirect('/');