Authorization: Basic

Discussion in 'PHP' started by batR, 20 Jun 2007.

  1. batR

    batR Member

    Joined:
    10 Mar 2007
    Messages:
    7
    Likes Received:
    7
    Reputations:
    0
    Запрос к скрипту идёт следующий

    Code:
    GET http://***/cgi-bin/user_info.cgi HTTP/1.0
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    Accept-Language: ru-ru
    Authorization: Basic eHh4QHh4eDoxMjM0NTY=
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.8 (build 01709))
    Host: xxx.xxx.xxx.xxx
    Proxy-Connection: Keep-Alive
    скрипт на perl
    Code:
    #!с:/perl/bin/perl.exe
    print "Content-type: text/html\n\n"; 
    foreach $key( keys( %ENV ) ) { 
       print "$key - $ENV{ $key } <br>\n"; 
    } 
    Выдает следующий результат
    Code:
    CHARSET_HTTP_METHOD - http://
    QUERY_STRING - 
    HTTP_ACCEPT_LANGUAGE - ru-ru
    SERVER_PROTOCOL - HTTP/1.0
    CHARSET_SERVER_PORT - 80
    HTTP_CONNECTION - Keep-Alive
    SERVER_SIGNATURE - 
    Apache/1.3.3 Server at xxx.xxx.xxx.xxx Port 80
    
    REMOTE_PORT - 1089
    HTTP_ACCEPT - image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    GATEWAY_INTERFACE - CGI/1.1
    HTTP_HOST - xxx.xxx.xxx.xxx
    SERVER_SOFTWARE - Apache/1.3.3 (Unix) PHP/3.0.5 rus/PL27.3
    SERVER_ADMIN - www@localhost
    REMOTE_USER - xxx@xxx
    REMOTE_ADDR - xxx.xxx.xxx.xxx
    SCRIPT_NAME - /home/cgi-bin/user_info.cgi
    SERVER_NAME - xxx.xxx.xxx.xxx
    DOCUMENT_ROOT - /usr/local/apache/htdocs
    REQUEST_URI - /home/cgi-bin/user_info.cgi
    REQUEST_METHOD - GET
    CHARSET - windows-1251
    SCRIPT_FILENAME - /usr/local/apache/htdocs/home/cgi-bin/user_info.cgi
    SOURCE_CHARSET - koi8-r
    PATH - /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
    CHARSET_SERVER_NAME - stats.ru:80
    AUTH_TYPE - Basic
    SERVER_PORT - 80
    так и не пойму а где же пароль от Authorization: Basic
    как его получить?
     
  2. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Authorization это не переменная окружения, а заголовок HTTP запроса
    Получить его можно через LWP или вынимать регулярками если через сокеты работаешь

    Я работаю так:
    1. запрашиваю страницу
    2. проверяю необходимость аутентификации
    Code:
    if(exists $res->{_headers}->{'www-authenticate'}) { ... }
    
    3. вынимаю название реалма для аутентификации
    Code:
    $res->{_headers}->{'www-authenticate'}=~/basic realm=\"(.+?)\"/i || return 0;
    my $realm=$1;
    
    3. отправляю запрос с аутенфикацией
    Code:
    $ua->credentials($target.":80",$realm,login=>'password');
    $res=$ua->get($target);
    
     
    #2 KSURi, 20 Jun 2007
    Last edited: 20 Jun 2007
  3. batR

    batR Member

    Joined:
    10 Mar 2007
    Messages:
    7
    Likes Received:
    7
    Reputations:
    0
    меня наверное неправильно поняли.
    Я запрашиваю страницу, на ней
    Я ввожу имя и пароль нажимаю ОК
    теперь скрипт должен получить это имя и пароль
    и записать в файл(это не важно, мне нужно их хотябы получить)

    Я просто практически не разбираюсь в Perl
     
    #3 batR, 20 Jun 2007
    Last edited: 20 Jun 2007