Одно только имя хоста почти никогда не используется, вам также нужен порт сервера в сочетании с прозвищем netloc .Скорее всего, вам нужно это значение для создания URI для скрипта.Это уже включено в фреймворки, нет необходимости делать это вручную.Ниже приведены примеры кода для обоих способов.
В PSGI прочитайте «переменную» HTTP_HOST
(или SERVER_NAME
и SERVER_PORT
) из хеша среды PSGI или вызовите uri
метод в Plack :: Request .
use Plack::Request qw();
my $app = sub {
my ($env) = @_;
my $req = Plack::Request->new($env);
return [200, ['Content-Type' => 'text/plain'], [
sprintf "Host: %s\nURI: %s", $env->{HTTP_HOST}, $req->uri
]];
};
В CGI объедините переменные среды POSIX SERVER_NAME
и SERVER_PORT
или вызовитеurl
метод.
use CGI qw();
my $c = CGI->new;
print $c->header('text/plain');
print "Host: $ENV{SERVER_NAME}:$ENV{SERVER_PORT}\n";
print "URI: " . $c->url;