express使用res.json()客户端出现request time out的问题。
发布于 9个月前 作者 mainliner 391 次浏览

使用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 这个连接状态很诡异啊。

回到顶部