Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于AJAX/jQuery的IP摄像机HTTP基本授权_Javascript_Jquery_Ajax_Http_Authentication - Fatal编程技术网

Javascript 基于AJAX/jQuery的IP摄像机HTTP基本授权

Javascript 基于AJAX/jQuery的IP摄像机HTTP基本授权,javascript,jquery,ajax,http,authentication,Javascript,Jquery,Ajax,Http,Authentication,我知道这个问题以前被问过很多次,但似乎没有一个答案对我有效,所以我的问题是: 我有一个索尼的IP摄像头,在内联网上。我正在为内部用户构建一个具有PHP/MySQL身份验证的站点,以便能够查看MJPEG流,但相机本身需要http身份验证。我不想让用户输入用户名和密码登录摄像头页面,然后必须键入http身份验证凭据(在弹出窗口中)才能看到流。我尝试使用jQUERY来更改标题,但没有效果。请记住,相机必须有自己的身份验证,这样用户就不能随意键入IP并查看流。我希望能够控制谁看什么以及什么时候看 我假设

我知道这个问题以前被问过很多次,但似乎没有一个答案对我有效,所以我的问题是:

我有一个索尼的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");
    }
});
这将在用户登录后立即加载


有什么建议吗?

如果您的意思是
div.log
没有显示“ok”消息,可能是因为您的DOM代码不正确。这:

$("div.log").attr("innerHTML", "ok");
设置
div
的DOM属性,而不是其实际的
innerHTML
。相反,您应该:

$("div.log").html("ok");

我在Firefox中遇到了相同的Javascript错误:

。。。0x804b000f(正在进行中的NS错误)[nsIXMLHttpRequest.setRequestHeader]

当我试图在某个对象中设置新的HTTP头时:

出现此错误是因为我试图在XMLHttpRequest.open()方法之前设置HTTP头

资料来源:

您是否尝试过.ajax中的用户名和密码字段

$.ajax({
    url: "http://mydomain/mypage.php",
    username: "myUsername",
    password: "myPassword",
    error: function () {
    }
}).done(function(html) {
        //Do Stuff
});

这对我来说也适用于类似的场景。

请展示一个“在wget中工作的某些基本内容”的例子。当涉及到firefox的同源策略时,这不意味着它将在IE上工作吗?在wget中工作的基本64的一个例子是:“YWRtaW46YtRtaW3=”使用innerHTML通常是糟糕的编程。这次就是其中之一。使用DOM规范所拥有的,一切都会好起来的。您不需要使用innerHTML。不,最终结果是身份验证窗口仍然会弹出。即使我删除了与div.log有关的部分代码。我在Firefox中还收到以下错误:错误:未捕获异常:[异常…”组件返回的故障代码:0x804b000f(NS_error_in_PROGRESS)[nsimlHttpRequest.setRequestHeader]“nsresult:”0x804b000f(NS_error_in_PROGRESS)”位置:“JS帧:::第35行”数据:否]这个问题与div无关。请忘记div。我的重点是ajax请求。我删除了更改div的html的代码。问题是它没有对用户进行身份验证。
$.ajax({
    url: "http://mydomain/mypage.php",
    username: "myUsername",
    password: "myPassword",
    error: function () {
    }
}).done(function(html) {
        //Do Stuff
});