我使用HTTP::Daemon
作为http服务器。
use strict;
use warnings;
use HTTP::Daemon;
my $d = HTTP::Daemon->new (Listen => 1, LocalPort => 8080, ReuseAddr => 1, Blocking => 0) or die "error daemon: " . $!;
while (1)
{
my $c = $d->accept ();
if (defined ($c))
{
my $req = $c->get_request ();
my $res = HTTP::Response->new (200);
$res->header ("Server" => "MyServer"); # try to overwrite the internel builtin value
$res->content ("OK");
$c->send_response ($res);
$c->autoflush ();
undef ($c);
}
sleep (1);
}
我尝试覆盖服务器的http头条目。但是,我得到的是第二个条目,我的值是&;myserver &;
是否知道如何覆盖原始值"libwww-perl-daemon"?
有一个获取该值的方法product_tokens
,但是它不能设置该值。
文档说你应该创建一个子类:
=条目$ d→product_tokens
返回此服务器将用于标识自身的名称。这是与C响应头一起发送的字符串。的使用这个方法的主要原因是子类可以覆盖它他们想使用另一个产品名称。
默认为字符串"libwww-perl-daemon/#.##"在"#。# #";是
替换为该模块的版本号。
所以,你写一个小的子类,然后用你的子类来创建对象:
use v5.12;
package Local::HTTP::Daemon {
use parent qw(HTTP::Daemon);
sub product_tokens {
... # whatever you want
}
}
my $d = Local::HTTP::Daemon->new( ... );