Обычная аутентификация через Ajax для доступа к странице, защищенной с помощью https, без ввода имени пользователя и пароля в диалоговом окне. - PullRequest
0 голосов
/ 03 июня 2019

Мне нужно получить доступ и отобразить страницу веб-сайта, размещенную по этому URL - https://xxxxx.com, без какого-либо диалогового окна аутентификации из моего приложения, размещенного в той же сети. Но я не могу пока - пропустить диалоговое окно ввести имя пользователя и пароль.

Я использовал Basic Auth для авторизации, и он отлично работает с Postman. Я получаю успешный ответ в Postman, предоставляя значение Basic Auth в заголовке как Authorization. То же зашифрованное значение для Basic Auth, которое я использовал в коде Springboot для получения некоторых подробности с этой страницы, и он тоже отлично работает.

Но когда я попытался переместиться / отобразить эту страницу, используя тег и Javascript, после установки требуемых заголовков для Basic Auth, я получаю ответ об ошибке и не авторизован - 401 с сообщением - WWW-Authenticate: Basic realm = "Пожалуйста, войдите в систему, используя свой адрес электронной почты Office (без @ xxx.xx)"

Я пробовал разные комбинации ajax, но не получал 200 кодов, и он всегда просит ввести диалоговое окно с просьбой ввести имя пользователя и пароль. В противном случае получается 401.

Ниже приведен код, используемый.

function handleSubmit(e){
        $.ajax({
            url: 'https://xxxxxx.com/se/',
            headers: {
                'Access-Control-Allow-Origin': '*',
                'Content-Type':'application/json',

            },
            type: 'GET',
            dataType: 'json',
            async: false,
            data: '',
             beforeSend: function (xhr) {
                  xhr.setRequestHeader('Authorization', "Basic cmlqdS5mcmFuY2lzOkN1cmlwczIxxxxxxxx==");
                  xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
              },
            success: function(){
              alert('succes: ');
            }

          });
}

Это моя форма в HTML -

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Это работает нормально после того, как я изменил на history.pushState ({}, null, '/xxx.com') в моей функции then

0 голосов
/ 04 июня 2019

Это мой основной код для Ajaxrequests.Я использую это для запроса защищенного Dir на моем веб-пространстве.В качестве URL я использую прокси-сервер CORS, просто чтобы обойти проблемы с CORS и заставить работать AuthAccess.

Возможно, вы можете попробовать это для своего приложения.Если он работает без ошибки 401 и без запроса входа в систему, вы можете добавить заголовок CORS без использования URL-адреса прокси-сервера CORS.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

        <script>
             function ajax() {
                user = "test";   //  Insert your
                pass = "test";   //    real Login here

                $.ajax({
                    url : "https://--insert-a-cors-proxy-here--.com/https://youdomain.here/secured/index.php",
                    type : "get",
                    cache : false,
                    beforeSend : function(xhr) {
                            xhr.setRequestHeader("Authorization", "Basic " + btoa(user+":"+pass));
                    },
                    success : function (result) {
                        $("#result").html(result);
                    },
                    "error": function() {  $('#errorbox').html('Oh noo, Error!');  }
                });
            }
        </script>

    </head>
    <body>
            <input type="button" value="Request with Ajax!" onclick="ajax();">

            <div id="errorbox" style="background-color:red">&nbsp;</div>
            <div id="result" style="background-color:yellow">&nbsp;</div>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...