문제

다음 코드 ...

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 주소가 필요하지 않으면 괜찮습니다. :(

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top