Próbowałem uruchomić ten program perl5:LWP :: UserAgent podstawowego uwierzytelniania HTTP
#!/usr/bin/env perl
use strict;
use warnings;
use LWP;
my $ua = LWP::UserAgent->new('Mozilla');
$ua->credentials("test.server.com:39272", "realm-name", 'user_name', 'some_pass');
my $res = $ua->get('http://test.server.com:39272/');
print $res->content;
Z drugiej strony mam HTTP :: Daemon:
#!/usr/bin/env perl
use strict;
use warnings;
use HTTP::Daemon;
my $hd = HTTP::Daemon->new or die;
print "Contact URL: ", $hd->url, "\n";
while (my $hc = $hd->accept) {
while (my $hr = $hc->get_request) {
if ($hr->method eq 'GET') {
print $hr->as_string, "\n";
}
}
$hc->close;
undef($hc);
}
i po prostu drukuje:
Contact URL: http://test.server.com:39272/
GET/HTTP/1.1
Connection: TE, close
Host: test.server.com:39272
TE: deflate,gzip;q=0.3
User-Agent: libwww-perl/6.03
Widzę więc, że LWP :: UserAgent nie wysyła uwierzytelniania HTTP Basic, ale nie wiem dlaczego.
widziałem jakiś post na tej stronie, ale mają ten sam kod podstawowy, a nie pracy ...
Jeśli używam HTTP :: Zapytanie to działa:
my $req = GET 'http://test.server.com:39272/';
$req->authorization_basic('my_id', 'my_pass');
my $res = $ua->request($req);
Wyjścia:
GET/HTTP/1.1
Connection: TE, close
Authorization: Basic bXlfaWQ6bXlfcGFzcw==
Host: test.server.com:39272
TE: deflate,gzip;q=0.3
User-Agent: libwww-perl/6.03
Czy zrobiłem coś złego przed?
dostałeś 401 odpowiedzi, który zażądał podstawowe auth? Czy uzyskałeś prawo królestwa? Pokaż łańcuch żądanie-odpowiedź, a nie tylko żądanie. – ikegami
Cóż, umieszczam kod dla zapytania i odpowiedzi. Otrzymałem odpowiedź 401. Nie rozumiem pytania o obszar, nie widzę, jak to jest ważne. – XoR
Wiem teraz, muszę zwrócić WWW-Authenticate: Basic realm = "Secure Area", wtedy LWP :: UserAgent zadziała, prawda? – XoR