错误 [ERR_HTTP_HEADERS_SENT]:将标头发送到客户端节点/LDAP 后无法设置标头

问题描述 投票:0回答:0

我正在尝试编写一个对用户进行身份验证的函数,然后在绑定到 LDAP 时更改数据库中的一个变量。我收到错误 [ERR_HTTP_HEADERS_SENT]。我知道此错误表明我正在为单个请求发送多个响应,但我找不到发生这种情况的位置。任何帮助将不胜感激:'(

控制器

module.exports.aupAccept= async (req, res, next) => {
    try {
        //TO DO 
        var q_sam = req.body.sAMAccountName;
        // var sam = req.body.sam;
        var q_pwd = req.body.password;
    
        service.aupAccept(q_sam, q_pwd, function(err, success){
            if (err) {
                res.status(500).send({ status: err.status, error: true, message: err.message });
                return;
            } 
            res.status(200).send({ status: success.status, error: false, message: success.message });
        }); 
    }
        
    catch (e) {
        next(createError(500, e));
    }
};

服务

module.exports.aupAccept = (user, pwd, callback) => {
    var opts = {
        filter: `(&(objectClass=person)(sAMAccountName=${user}))`,
        scope: 'sub',
        attributes: ldapVar.data.userAttributes
    };

    service.ldapSearch(ldapVar.data.baseDN, opts, function (err, data) {
        if (err || data.result.status != 0) {
            callback({ status: 500, error: true, message: err }, null);
            return;
        }
        var q_dn = data.entries[0].dn;
        var q_client = ldap.createClient({ url: ldapServer });
        
        q_client.bind(q_dn, pwd, function (err) {
            var error = [];
            error["error"] = 'data not found';

            var nowDate= new Date(); 
            var today = nowDate.getFullYear()+'/'+(nowDate.getMonth()+1)+'/'+nowDate.getDate(); 

            var opts = {
                policyAcceptDate: [today],
            };

            q_client.add(dn, opts, function (err, res) {
                if (err) {
                    callback(err, null);
                    return;
                }
                else {
                    res.on('error', function (err) {
                        callback(err, null);
                        return; 
                    });
                }
            });
            q_client.unbind();
            if (err) {
                callback({ status: 500, error: true, message: err }, null);
                return; 
            } else {
                callback(null, { status: 200, error: false, message: "Authenticated Succesfully" });
            }
        });
    });
    
};

用我的用户凭据发送了一个帖子请求 期望绑定然后将 policyAcceptDate 更新为现在的时间 收到 HTTP 标头请求错误

node.js http-headers ldap http-post
© www.soinside.com 2019 - 2024. All rights reserved.