6
我目前正在使用JSONWebtoken构建一个使用NodeJS的API。当我尝试使用标题中的标记时,我收到错误403,它直接转到下面代码中的else语句,这意味着标记根本就不存在。与JQuery一起使用JWT,不断得到错误
这是我如何得到服务器端的令牌:
router.use(function(req, res, next){
var token = req.body.token || req.query.token || req.headers['x-access-token'];
//decode token
if(token) {
jwt.verify(token, app.get('secretKey'), function(err, decoded){
if(err)
return res.json({ success:false, message: 'failed, token problem'});
else {
req.decoded = decoded;
next();
}
});
}else {
return res.status(403).send({
success:false,
message: 'token not provided'
})
}
});
上的客户端,我使用jQuery并将其保存在cookie的:
令牌作为数据的工作原理:
$.ajax({ type:'GET', dataType: 'jsonp', url :"http://localhost:3000/api/users", data : { token : $.cookie('token') }, success: function(data, status) { console.log("Status " + status); console.log(data); } });
令牌作为参数的功能太
$.get("http://localhost:3000/api/users?token=" + $.cookie('token')) .done(function(data){ console.log(data); });
这是问题所在,用头
$.ajax({ type:'GET', url :"http://localhost:3000/api/users", beforeSend: function(xhr) { xhr.setRequestHeader("Authorization", "Bearer " + $.cookie('token')); }, success: function(data, status) { console.log("Status " + status); console.log(data); } });
我也尝试添加X-访问令牌作为标题上ajaxSetup
$.ajaxSetup({
headers: {
'x-access-token': $.cookie('token')
}
});
我不断收到403,这是令牌没有提供,我认为这是一个CORS问题,所以我试图使用CORS NPM包https://github.com/expressjs/cors不起作用,我试图实现这一点。
app.use(function(req, res, next){
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
//更新信息,2016年8月22日
如果我使用的Safari之后,它的工作原理:
$.ajax({
type:'GET',
url :"http://localhost:3000/api/users",
headers : { "Authorization" : $.cookie('token') },
success: function(data, status) {
console.log("Status " + status);
console.log(data);
}
});
但有些是怎么一回事呢,如果都和else语句,所以它响应下一条路线,但也显示403消息。
你有服务器端代码?如果您使用其他方法运行验证,但验证成功但您的cookie不存在,您是否记得在验证令牌之前从cookie中移除“承载者”? – Mike
@Mike我更新服务器代码问题是直接进入else语句,这意味着令牌根本不存在 – Hilmanrdn
尝试在ajax头文件中使用对象:{'X-Auth-Token':token} OR ..头文件:{ 'Authorization':'Bearer'+ $ .cookie('token') },还尝试添加标题'Content-Type':'application/json', 'Accept':'application/json' – owaishanif786