Базовая HTTP-авторизация на IP-камере с использованием AJAX / jQuery - PullRequest
4 голосов
/ 15 ноября 2011

Я понимаю, что этот вопрос задавался много раз раньше, но мне кажется, что ни один из ответов не помог мне, поэтому вот моя проблема:

У меня есть IP-камера Sony, которая находится во внутренней сети. Я создаю сайт с аутентификацией PHP / MySQL для внутренних пользователей, чтобы иметь возможность просматривать поток MJPEG, но сама камера требует http-аутентификации. Я не хочу, чтобы пользователи вводили свои имя пользователя и пароль для входа на страницу камеры, а затем должны были ввести учетные данные для аутентификации http (во всплывающем окне), чтобы увидеть поток. Я пытался использовать jQUERY, чтобы изменить заголовки безрезультатно. Имейте в виду, что камера ДОЛЖНА иметь собственную аутентификацию, чтобы пользователи не могли просто случайно набрать IP и увидеть поток. Я хочу иметь возможность контролировать, кто что просматривает и когда.

Я предполагаю, что если я сделаю правильный аутентификационный вызов, когда пользователь войдет на страницу, эта камера будет ему доступна, так как они будут «тихо» авторизованы. Кроме того, если я использую wget из терминала с --headers: "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");
    }
});

Это загружается, как только пользователь входит в систему.

Есть предложения?

Ответы [ 3 ]

2 голосов
/ 06 марта 2012

У меня была та же ошибка JavaScript в Firefox:

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

Когда я пытался установить новый заголовок HTTP в каком-то XMLHttpRequest объекте:

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

Произошла ошибка, поскольку я пытался установить заголовок HTTP до метода XMLHttpRequest.open ().

Источник: http://www.webmasterworld.com/forum91/4542.htm

0 голосов
/ 21 января 2013

Вы пробовали поля имени пользователя и пароля в .ajax?

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

Это работает для меня в аналогичном сценарии.

0 голосов
/ 15 ноября 2011

Если вы имеете в виду, что div.log не отображает сообщение «ОК», возможно, это из-за того, что ваш код DOM неверен.Это:

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

устанавливает атрибут DOM для div, а не его фактический innerHTML.Вместо этого вы должны сделать:

$("div.log").html("ok");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...