Tôi cố gắng để chạy chương trình Perl5 này:LWP :: UserAgent HTTP Basic Authentication
#!/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;
Mặt khác tôi có 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);
}
Và nó chỉ in:
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
Vì vậy, tôi thấy rằng LWP :: UserAgent không gửi xác thực cơ bản HTTP, nhưng tôi không biết tại sao.
Tôi nhìn thấy một số bài đăng trên trang web này, nhưng họ có mã này cơ bản giống nhau, và nó không công việc ...
Nếu tôi sử dụng HTTP :: Yêu cầu sau đó nó hoạt động:
my $req = GET 'http://test.server.com:39272/';
$req->authorization_basic('my_id', 'my_pass');
my $res = $ua->request($req);
Đầu ra:
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
Ý của tôi làm điều gì sai trước đây?
Bạn có nhận được một phản ứng 401 đã yêu cầu auth cơ bản? Bạn đã có được vương quốc phải không? Hiển thị chuỗi yêu cầu phản hồi, không chỉ yêu cầu. – ikegami
Tôi cũng đặt mã cho yêu cầu & phản hồi. Và tôi đã nhận được phản hồi 401. Không hiểu câu hỏi về lĩnh vực, tôi không thấy nó quan trọng như thế nào. – XoR
Tôi biết bây giờ, tôi cần phải trả lại WWW-Authenticate: Basic realm = "Secure Area", sau đó LWP :: UserAgent sẽ hoạt động, phải không? – XoR