Получить авторизацию из заголовка HTTP-запроса
Я уже искал в SO для некоторых потоков об этом, но мог найти только те, которые объясняли, для чего этот заголовок, или как получить заголовок авторизации в С#, но я не хочу читать его со стороны сервера, но из клиента сторона.
Есть ли способ получить заголовок Base64 с кодировкой Base64 "Авторизация" в браузере?
Я хочу реализовать инструмент, в котором вы можете войти в систему, и если вы нажмете на специальную кнопку, ваше имя пользователя будет сохранено.
Моя проблема заключается в том, что браузер автоматически выполняет авторизацию, а с помощью методов jQuery и JavaScript вы можете устанавливать только запросы и получать ответчики. Я не смог найти способ получения запросов.
В библиотеке gethttp можно получить некоторые заголовки, но не заголовок авторизации.
Я предполагаю, что этот заголовок скрыт.
Я делаю логин через SVN, и браузер делает авторизацию в тот момент, когда вы входите на сайт.
Достаточно только имя пользователя.
Я ищу решения, в которых пользователю не нужно вводить свое имя пользователя.
Ответы
Ответ 1
Я предполагаю, что вы пытаетесь использовать механизм авторизации Basic Realm
На этот вопрос уже ответили в Stackoverflow и он включает объект jquery $.ajax()
.
Как использовать Basic Auth с JQuery и AJAX?
Поэтому, пожалуйста, не говорите мне об этом
$.ajaxSetup({
headers: {
'Authorization': "Basic XXXXX"
},
data: '{ "comment" }',
success: function (){
alert('Thanks for your comment!');
}
});
где XXXXX - ваше имя пользователя: пароль, закодированный в base64
Ответ 2
Невозможно получить заголовки для запроса страницы CURRENT. Это было задано несколько раз на SO.
Однако вы можете сделать новый запрос и получить заголовки этого запроса. Таким образом, вы можете получить заголовки Basic Auth, base64 декодировать эту строку, а затем у вас есть имя пользователя (а также пароль).
Декодирование base64 в javascript может быть выполнено с использованием следующей функции, представленной в этом ответе by @broc.seib.
decodeBase64 = function(s) {
var e={},i,b=0,c,x,l=0,a,r='',w=String.fromCharCode,L=s.length;
var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
for(i=0;i<64;i++){e[A.charAt(i)]=i;}
for(x=0;x<L;x++){
c=e[s.charAt(x)];b=(b<<6)+c;l+=6;
while(l>=8){((a=(b>>>(l-=8))&0xff)||(x<(L-2)))&&(r+=w(a));}
}
return r;
};