문제
다음 코드 ...
my $user_agent = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => $url);
my $response = $user_agent->request($request);
if ($response->is_success) {
print "OK\n";
} else {
die($response->status_line);
}
.. 실패합니다 ..
500 Can't connect to <hostname> (Bad hostname '<hostname>')
.. $ URL의 호스트 이름이 IPv6 만 주소 인 경우 AAAA
기록, 그러나 아니요 A
기록).
내 질문은 다음과 같습니다.
- LWP에서 IPv6 지원을 어떻게 활성화합니까?
- "perifer-IPV4-Over-IPV6"에 대한 LWP 설정을 어떻게 구성합니까?
A
vs.AAAA
) / "prefer-IPV6-Over-IPV4"(AAAA
vs.A
)?
해결책
당신이 그냥 사용해야 할 것 같습니다 net :: inet6glue :: inet_is_inet6. 예를 인용 할 :
use Net::INET6Glue::INET_is_INET6;
use LWP::Simple;
print get( 'http://[::1]:80' );
print get( 'http://ipv6.google.com' );
다른 팁
IPv6 네트 모듈을 사용하려면 모듈을 변경해야한다고 생각합니다. 기본적으로 다음은 활성화되지 않습니다. http://eintr.blogspot.com/2009/03/bad-state-of-ipv6-in-perl.html. 나는 "prefer-ipv6"만큼 단순한 것이 있다고 생각하지 않습니다.
데비안 휘저리 (Perl 5.14)
좋은 일 :
use LWP::Simple;
print get( 'http://ip6-localhost:80' );
작동 안함 (1)
use LWP::Simple;
print get( 'http://[::1]:80' );
작동 안함 (2) [반환 : 나쁜 호스트 이름]
use LWP::Simple;
$ua = new LWP::UserAgent();
my $req = new HTTP::Request("GET", "http://[::1]/");
my $res = $ua->request($req);
작동 안함 (3) [반환 : 연결이 거부되었습니다]
use Net::INET6Glue::INET_is_INET6;
use LWP::Simple;
$ua = new LWP::UserAgent();
my $req = new HTTP::Request("GET", "http://[::1]/");
my $res = $ua->request($req);
수, HTTP 요청에서 IPv6 주소가 필요하지 않으면 괜찮습니다. :(
제휴하지 않습니다 StackOverflow