[英]HTTP Basic Authorization on IP Camera using AJAX / jQuery
我知道这个问题之前曾被问过很多次,但似乎没有一个答案对我有用,所以这是我的问题:
我在Intranet中有一个Sony IP摄像机。 我正在建立一个使用PHP / MySQL身份验证的网站,供内部用户查看MJPEG流,但相机本身需要http身份验证。 我不想让用户输入用户名和密码来登录摄像头页面,然后不得不键入http身份验证凭据(在弹出窗口中)以查看流。 我尝试使用jQUERY将标头更改为无济于事。 请记住,摄像机必须具有其自己的身份验证,以便用户不能只是随机输入IP并查看流。 我希望能够控制谁查看内容和时间。
我假设如果用户登录页面时进行正确的身份验证调用,则该摄像头将对他们可用,因为他们将“无声地”登录。而且,如果我从带有--headers的终端使用wget :“ Authorization:blah_Blah”实际上有效,但是我无法通过jQuery做到这一点! 这是我的代码:
$.ajax({
url : "http://some_ip_internally_for_the_cam/some_page_on_cam_that_needs_authentication_to_access_otherwise",
method : 'GET',
beforeSend : function(req) {
req.setRequestHeader('Authorization', "some_base_64_stuff_that_works_in_wget");
},
success: function() {
$("div.log").attr("innerHTML", "ok");
}
});
用户登录后立即加载。
有什么建议么?
我在Firefox中遇到了相同的Javascript错误:
... 0x804b000f(NS_ERROR_IN_PROGRESS)[nsIXMLHttpRequest.setRequestHeader] ...
当我尝试在一些XMLHttpRequest对象中设置新的HTTP标头时:
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
发生错误是因为我试图在XMLHttpRequest.open()方法之前设置HTTP标头。
您是否尝试过.ajax中的用户名和密码字段?
$.ajax({
url: "http://mydomain/mypage.php",
username: "myUsername",
password: "myPassword",
error: function () {
}
}).done(function(html) {
//Do Stuff
});
在类似的情况下,这对我有用。
如果您的意思是div.log
不显示“ ok”消息,则可能是因为您的DOM代码不正确。 这个:
$("div.log").attr("innerHTML", "ok");
设置div
的DOM属性,而不是其实际的innerHTML
。 相反,您应该执行以下操作:
$("div.log").html("ok");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.