ajax中res和req,javascript – 来自AJAX调用的res.redirect

我正在尝试在ajax put请求之后进行重定向.我打算使用纯JS客户端进行验证.

客户:

$(document).ready(function() {

login = () => {

var username = $("[name='username']").val()

var password = $("[name='password']").val()

$.ajax({

type: "put",

url: '/login',

data: {

username: username,

password: password

}

// success: function(response) {

// console.log('Success:')

// console.log(response.user)

// Cookies.set('username', response.user.username)

// Cookies.set('first_name', response.user.first_name)

// Cookies.set('last_name', response.user.last_name)

// Cookies.set('email', response.user.email)

// window.location.href = window.location.origin + '/'

// },

// error: function(error) {

// console.log("Error:")

// console.log(error)

// }

})

}

logout = () => {

console.log("Log out clicked.")

Cookies.remove('username')

Cookies.remove('first_name')

Cookies.remove('last_name')

Cookies.remove('email')

window.location.href = window.location.origin + '/logout'

}

})

服务器:

/* GET home page. */

router.get('/', function(req, res, next) {

res.render('main')

});

router.put('/login', function(req, res) {

// Password is not encrypted here

console.log('req.body')

console.log(req.body)

User.findOne({ username: req.body.username }, function(err, user) {

// Password is encrypted here

if (err) throw err

console.log('user')

console.log(user)

bcrypt.compare(req.body.password, user.password, function(err, result) {

if (result) {

var token = jwt.encode(user, JWT_SECRET)

// return res.status(200).send({ user: user, token: token })

return res.redirect('/')

} else {

return res.status(401).send({error: "Something is wrong."})

}

})

})

})

成功登录后,我无法获取main.hbs.我的注释代码有效,但我正在尝试重定向服务器端而不是客户端,因为我被告知它对安全性更好.

解决方法:

我不认为你想做什么是可能的. AJAX请求仅用于来回传递数据.现在发生的事情是你需要编写客户端行为的脚本.这意味着AJAX请求将传递302和其他数据一起传递到JS上的回调.不能从服务器更改客户端行为.您可以使用AJAX返回的值执行某些操作.如果是500,抛出错误信息,200做某事等.

使服务器重定向工作的唯一方法是通过传统的HTML表单提交.

标签:jquery,javascript,ajax,express

来源: https://codeday.me/bug/20190611/1217514.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值