Как получить ответ с заданным URL и именем пользователя и паролем?

0

Мне было предложено загрузить выпадающие окна с сервера OLAP и предоставить учетные данные сервера. Они следующие

  • URL
  • Метод HTTP - POST
  • auth user: abc123
  • auth pwd: api123
  • Тип содержимого REQ/RES/charset = application/json; кодировка = UTF-8

Ниже приведен код, который я написал:

var hr = new XMLHttpRequest();
var url= "http://someIPAddress/getData";

alert("Before Posting data");
hr.open("POST",url,true);
alert("Connection open");

document.getElementById("submitButton").disabled = true;
document.getElementById("status").innerHTML = "Loading...";

hr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
hr.onreadystatechange = function(){
    alert("Entered callback function...");
    if(hr.readyState == 4 && hr.status == 200){
        var return_data = hr.responseText;
        alert(return_data);
    }
    else{
        alert("There is a connection issue");
        var return_data = hr.responseText;
    }
}
ajaxReq.send("POST",url,function populate(){
    alert("Request received");
})
}

Это точные данные (за исключением URL, имени пользователя и пароля. Не раскрывая здесь настоящие данные)

Я пытаюсь использовать XMLHttpRequest(), указав URL, POST и функцию обратного вызова. Как передать имя пользователя и пароль здесь, чтобы он отвечал вам данными

Когда я пытаюсь получить доступ к URL-адресу, он попросил меня ввести имя пользователя и пароль:

Я не знаю, как добавить учетные данные с URL-адресом, так как я не задал точный ключ для значений. Не могли бы вы помочь. Я думаю, что упускаю что-то

Теги:
xmlhttprequest

2 ответа

1

Вам нужно отправить заголовок Authorization с запросом. Это значение заголовка состоит из имени пользователя, за которым следуют ':' и пароль, закодированные как base64:

hr.setRequestHeader('Authorization', 'Basic ' + btoa(username + ':' + password));

btoa() кодирует строку как base64.

  • 0
    Спасибо за быстрый ответ, так я должен определить функцию btoa? Также есть ли 100% уверенность, что имя пользователя и пароль передаются таким образом только на сервер?
  • 0
    btoa() - стандартная функция JavaScript. Вам не нужно определять это. Когда вы говорите, что передали таким образом только на сервер , вы имеете в виду, что никто другой не может его увидеть? Если это так, то ответ: зависит от того, используете ли вы HTTPS. Если нет, то любой может увидеть запрос, и получить имя пользователя и пароль так же просто, как расшифровать строку base64 заголовка Authorization . Но имейте в виду, что это также происходит, когда вы вводите свое имя пользователя и пароль в диалоговом окне входа в браузер. Если вы беспокоитесь о безопасности, всегда используйте HTTPS.
Показать ещё 4 комментария
0

Вы пробовали URI, например, http://user:pass@someIPAddress/getData возможно, это все, что вам нужно. Я никогда не пробовал подавать форму, но вы можете проверить

Ещё вопросы

Сообщество Overcoder
Наверх
Меню