使用http authentification从IP Cam网址获取图片

时间:2018-04-02 00:09:14

标签: javascript node.js

您好我尝试将CCTV Cam的快照放在我的网页/ HTML页面上(所有本地)。 但问题是HTTP身份验证。

  <img id="img1" border="0" src="http://admin:admin@192.168.178.41/tmpfs/auto.jpg">

此解决方案无法实现,因为出于安全原因,Chrome不再允许网址中的凭据。

没有凭据我明显得到错误401。 我用xmlHttpRequest尝试了它,但问题是我无法在相机的ServerSide上激活的CORS,我想要获取图像。我已经尝试在cam中禁用http authentification但接口不允许它。我不关心安全方面,因为凸轮仅用于受保护的本地网络。我也尝试过node.js

   var request = require('request');

var options = {  
    url: 'http://192.168.178.41/tmpfs/auto.jpg',
    auth: {
        username: 'admin',
        password: 'admin'
    }
};

request.get(options);
console.log(request.get(options));

Sry,我对Node.js并不满意,希望你能解决我的问题。

2 个答案:

答案 0 :(得分:1)

您应该可以使用nodeJs执行此操作,但是您发送了request但是您没有对结果做任何事情,它可以在回调中使用,请尝试:

const auth = 'Basic ' + Buffer.from(username + ':' password).toString('base64');

const options = {
    url : 'http://192.168.178.41/tmpfs/auto.jpg',
    headers : {
        "Authorization" : auth
    }
}

request.get(options, (error, response, body) => {
    console.log(body); // there's your image
});

您可以随时将auth凭据直接放在url中:

const options = {
    url : 'http://admin:admin@192.168.178.41/tmpfs/auto.jpg'
}

request.get(options, (error, response, body) => {
    console.log(body); // there's your image
});

答案 1 :(得分:1)

在这种情况下,您可以更轻松地进行操作,因为ip cam使用参数进行身份验证,可以使用以下标志轻松给出路径:?usr=admin&pwd=admin

结果将是:

<img id="img1" border="0" src="http://192.168.178.41/tmpfs/auto.jpg?usr=admin&pwd=admin">

侧面注释,“ snap.jpg”提供完整图像。