Как инициировать базовую аутентификацию несколькими ответами позже при src изменениях? - PullRequest
0 голосов
/ 26 января 2019

Мы пытаемся разработать встроенное решение для IP-камеры (работающее с apache2), чтобы отображать существующий локальный HTML-контент из iframe на камере, и у нас возникли некоторые проблемы со встроенной аутентификацией. Мы пытаемся решить эту проблему без внесения изменений в конфигурацию apache, поскольку она должна иметь возможность массового развертывания и может потребоваться сосуществовать с другим встроенным программным обеспечением, использующим конфигурацию apache по умолчанию.

Как наша базовая html-страница, так и целевая html-страница не требуют аутентификации, однако целевой html вызывает несколько локальных сценариев, которые запрашивают аутентификацию. Я попытался авторизовать целевую страницу (которая дает 200 без аутентификации) с помощью вызова ajax или xhr, и похоже, что авторизация не передается сценариям .js. Я также могу успешно авторизовать файлы .js, которые он пытается вызвать по отдельности, и извлечь их содержимое, однако при вызове из целевого html-файла они по-прежнему вызывают 401 и запрашивают вход в систему даже после успешной предварительной авторизации. Есть ли способ обеспечить добавление заголовков к любым последующим запросам, которые генерируются вне моего кода?

Полное решение - локально, а IP-камера работает под управлением apache2. Установки изготовителя являются настройками по умолчанию, в настоящее время для целей тестирования авторизация установлена ​​на базовую. Я пробовал ajax-аутентификацию, XHR, отправку на основе форм, все в дайджесте и в основном, с изменением режима на камере. Мы стараемся свести к минимуму любые модификации файловой системы камеры и предпочли бы просто дополнительные файлы в этом каталоге для совместимости и развертывания. Мы также попытались предварительно авторизоваться на странице входа в базовую камеру, к которой мы можем аутентифицироваться, но все равно получаем 401 позже при попытке доступа к файлам .js.

        var auth = "Basic " + Base64.encode(user+":"+pass)
        $.ajax({
            type: "GET",
            url: url,
            datatype: 'jsonp',
            headers: {
                "Authorization": auth
            },
            success: function (response) {
                console.log("Auth Success");
                $("html").html(response);
            },
            error: function() {
                console.log("Auth Failed")
            }

Возвращает 200, когда вызывает URL-адрес, но затем, когда загружается ответ html, в конце концов появляется 401 без заголовка без аутентификации.

Мне нужно, чтобы заголовок авторизации передавался на вызовы в пределах моего целевого URL, или чтобы найти способ перехватить 401 из вызовов, которые я не делаю напрямую, чтобы я мог аутентифицироваться.

...