На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Соблюдайте общие правила форума
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Указывайте точные версии Delphi и используемых сетевых библиотек.

Не приветствуется поднятие старых тем. Если ваш вопрос перекликается со старой темой, то для вопроса лучше создать новую тему, а старую указать в первом сообщении с описанием взаимосвязи.

Внимание:
попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

Модераторы: Krid, Rouse_
  
> IdHTTP, SSL, Basic-авторизация , Непонятка с авторизацией
    Доброго времени суток!

    Вопрос возник относительно BASIC-авторизации через IdHTTP. Точнее, мне хочется понять почему при первом запросе я получаю ответ от сервера 401 (не авторизован), а при повторных - все нормально (200 OK) и доступ к закрытой информации полный.

    ExpandedWrap disabled
      const
        host = '172.22.0.1';
        UserAgent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0';
        Accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
        AcceptLanguage = 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3';
        AcceptEncoding = 'gzip, deflate';
        Connection = 'keep-alive';
        Referer = 'http://172.22.0.1/';
       
       
      function GetAuthCode(s: string): string;
      var
        enc: TIdEncoderMIME;
      begin
        enc := TIdEncoderMIME.Create(nil);
        Result := enc.EncodeString(s);
        enc.Free;
      end;
       
      procedure SetParamsHttp(login, password: string; var http: TIdHTTP);
      begin
        http.HandleRedirects := true;
        http.AllowCookies := true;
        http.Request.Accept := Accept;
        http.Request.AcceptEncoding := AcceptEncoding;
        http.Request.AcceptLanguage := AcceptLanguage;
        http.Request.BasicAuthentication := True;
        http.Request.Connection := Connection;
        http.Request.Host := host;
        http.Request.Username := Login;
        http.Request.Password := Password;
        if (CurrentReferer <> '') and (CurrentReferer <> Referer) then
          http.Request.Referer :=  CurrentReferer
        else
          http.Request.Referer := Referer;
        HTTP.Request.CustomHeaders.clear;
        HTTP.Request.CustomHeaders.Add('Authorization: Basic '+GetAuthCode(HTTP.Request.Username+':'+HTTP.Request.Password));
      end;
       
      procedure TForm1.IdHTPAuthorization(Sender: TObject;
        Authentication: TIdAuthentication; var Handled: Boolean);
      begin
        Handled := True;
        Authentication.Username := edLogin.Text;
        Authentication.Password := edPassword.Text;
      end;
       
      procedure TForm1.Button1Click(Sender: TObject);
      var
        idHp: TIdHTTP;
        idIOSSL: TIdSSLIOHandlerSocketOpenSSL;
        idCM: TIdCookieManager;
      begin
        idHp := TIdHTTP.Create(nil);
        idIOSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
        idCM := TIdCookieManager.Create(nil);
        idHp.CookieManager := idCM;
        idHp.IOHandler := idIOSSL;
        idhp.OnAuthorization := IdHTPAuthorization;
        try
          SetParamsHttp(edLogin.Text, edPassword.Text, idhp);
          ShowMessage(idHp.Get('https://172.22.0.1/cgi-bin/um2/ac'));
        finally
          idCM.Free;
          idIOSSL.Free;
          idHp.Free;
        end;
      end;
    Сообщение отредактировано: =SAPSAN= -
    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0.0680 ]   [ 15 queries used ]   [ Generated: 23.08.26, 22:46 GMT ]