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 环回地址。
我有一台支持 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 环回地址。