Javascript 如何使用基本身份验证访问IP url

Javascript 如何使用基本身份验证访问IP url,javascript,php,authentication,url,Javascript,Php,Authentication,Url,因此,我有这个项目,通过一个网站访问我的ip cam流,但我的摄像头接口有一个基本身份验证的标题 我尝试在url中使用用户凭据,但无效: http://username:password@192.168.my-ip/ 另外,我的密码包含“@”,所以我用%40对它们进行了编码,并尝试了%2540(用于%的编码),但也不起作用 我看到像这样的JS post请求可能会起作用,但我不知道在哪里可以找到clientSecret: var clientId = "MyApp"; var

因此,我有这个项目,通过一个网站访问我的ip cam流,但我的摄像头接口有一个基本身份验证的标题

我尝试在url中使用用户凭据,但无效:

http://username:password@192.168.my-ip/

另外,我的密码包含“@”,所以我用%40对它们进行了编码,并尝试了%2540(用于%的编码),但也不起作用

我看到像这样的JS post请求可能会起作用,但我不知道在哪里可以找到clientSecret:

var clientId = "MyApp";
var clientSecret = "MySecret";

// var authorizationBasic = $.base64.btoa(clientId + ':' + clientSecret);
var authorizationBasic = window.btoa(clientId + ':' + clientSecret);

var request = new XMLHttpRequest();
request.open('POST', oAuth.AuthorizationServer, true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.setRequestHeader('Authorization', 'Basic ' + authorizationBasic);
request.setRequestHeader('Accept', 'application/json');
request.send("username=John&password=Smith&grant_type=password");

request.onreadystatechange = function () {
    if (request.readyState === 4) {
       alert(request.responseText);
    }
};

在本例中,clientId和clientSecret分别是您的用户名和密码。(代码似乎来自一些OAuthLogin流,其中通常使用客户端/应用程序ID和秘密)。所有这部分都将它们与中间的冒号串联在一起,然后BASE64对结果进行编码,这样这个值就可以在授权头中使用。是的,我试图在这些字段中使用用户名和密码,它执行与上面相同的操作(直接在url中写入凭据),但它不禁用基本身份验证窗口,如何获取基本身份验证字段以发送请求?如果浏览器仍向您显示身份验证窗口,则表示您尚未提供正确的凭据。“另外,我的密码包含“@”-虽然这不应该是问题的一部分,但您应该知道,您在此处尝试执行的操作要求您在客户端代码中公开这些凭据,这意味着访问您的站点的每个人都可以找到它们。因此,在这里使用“复杂”密码与使用简单密码相比几乎没有任何额外的好处。(如果这是你用于其他东西的“默认”密码之一,那么这实际上是一个严重的泄漏)是的,我知道,但这是出于教育目的,所以安全性不是问题。你的IP cam需要oAuth登录吗?这与基本的http身份验证完全不同。除非IP cam的文档或信息说需要oAuth,否则所有这些Javascript都是完全不相关的,无法工作。对于基本身份验证,您只需执行以下操作。