使用AJAX / jQuery在IP Camera上进行HTTP基本授权

时间:2011-11-15 14:03:35

标签: javascript jquery ajax http authentication

据我所知,这个问题之前曾被问过很多次,但似乎没有一个回复对我有用,所以这就是我的问题:

我有一个位于内联网的索尼IP摄像头。我正在为内部用户构建一个具有PHP / MySQL身份验证的站点,以便能够查看MJPEG流,但摄像头本身需要http身份验证。我不想让用户输入他们的用户名和密码登录到摄像头页面,然后必须输入http身份验证凭据(在弹出窗口中)才能看到流。我尝试使用jQUERY来更改标题无效。请记住,摄像头必须有自己的身份验证,以便用户不能随意键入IP并查看流。我希望能够控制谁查看什么和何时。

我假设如果我在用户登录页面时进行了正确的身份验证调用,那么他们可以“静默”登录该摄像头。此外,如果我使用来自终端的wget --headers:“授权: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");
    }
});

一旦用户登录,就会加载。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

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

  

... 0x804b000f(NS_ERROR_IN_PROGRESS)[nsIXMLHttpRequest.setRequestHeader] ...

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

xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

发生错误是因为我试图在 XMLHttpRequest.open()方法之前设置HTTP标头

来源: http://www.webmasterworld.com/forum91/4542.htm

答案 1 :(得分:0)

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

$("div.log").attr("innerHTML", "ok");

设置div的DOM属性,而不是其实际的innerHTML。相反,你应该这样做:

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

答案 2 :(得分:0)

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

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

在类似的情况下,这适用于我。