express使用res.json()客户端出现request time out的问题。
使用express,在最后调用 return res.json(200,user);最为用户登陆成功的应答,频繁出现iOS端第一次登陆会出现request time out错误,再登陆一次,迅速成功的情况。而node端的log里面显示响应已经成功了。
使用Charles观察网络请求,发现客户端登陆请求发出后,/login请求的状态为:
received response header,waiting for response body
而不是‘完成’状态,当客户端请求超时后,再次发出/login请求,将100%成功的应答。 iOS客户端使用AFNetworking node的代码如下:
exports.doLogin = function(req,res) {
if(req.body.phone === undefined || req.body.email === undefined){
return res.json(400,{'err':'Please input your username and password'});
}
var md5 = crypto.createHash('md5');
var password = md5.update(req.body.password).digest('base64');
User.getByLogin(req.body, function(err,user){
if(!user){
return res.json(401,{'err':'user does not exist'});
}
if(user.user.userInfo.password != password){
return res.json(402,{'err':'password does not match'});
}
req.session.cookie.originalMaxAge = settings.maxAge;
req.session.user = user;
return res.json(200,user);
});
};
2 回复
密码没加盐啊貌似。
试着不用 ios 客户端,换个方式测测看 node server 导致有没有问题嘛。既然 node 的 log 里显示成功的话,我觉得应该去调下客户端。
恩,没加盐。密码传输也为明文,通信协议也没有。。。 关键是 waiting for response body 这个连接状态很诡异啊。