HTTP::Request 使用 IPv6 接口

HTTP::Request use IPv6 interface

我有一台支持 IPv6 的 Linux 机器,本地环回接口:::1

我创建了一个向本地虚拟主机发送 HTTP 请求的 perl 脚本:

#!/usr/bin/perl

use strict;
use warnings;

use Net::INET6Glue::INET_is_INET6;
use LWP;

my $user_agent = LWP::UserAgent->new;
my $url = 'http://lwt/docs/info.php';
my $request = HTTP::Request->new(GET => $url);
my $response = $user_agent->request($request);
if ($response->is_success) {
    print $response->decoded_content;
}
else {
    die($response->status_line);
}

info.php 文件:

<?php
print $_SERVER['REMOTE_ADDR'];

lwt 别名是这样写在 /etc/hosts 文件中的:

127.0.0.1       lwt

当前输出为:“127.0.0.1”。因此,请求是通过 IPv4 发送的。

是否可以让 Perl 改用 IPv6 接口?

为了建立 IPv6 连接,LWP 必须为您的主机名找到一个 IPv6 地址。由于您通过 /etc/hosts 提供的地址 127.0.0.1 是 IPv4 地址,因此不会发生这种情况。您需要像 ::1 lwt 这样的主机条目,以便主机名解析为 IPv6 环回地址。