Получить авторизацию из заголовка 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;
};