Perl HTTP::Daemon:如何在HTTP头中为服务器设置自定义值?

Perl HTTP::Daemon:如何在HTTP头中为服务器设置自定义值?,perl,http,http-daemon,Perl,Http,Http Daemon,我正在为HTTP服务器使用HTTP::Daemon 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->acc

我正在为HTTP服务器使用
HTTP::Daemon

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守护进程”吗


有一种方法
product\u tokens
用于获取值,但它无法设置值。

文档说您应该创建一个子类:

=物料$d->产品\u代币

返回此服务器将用于标识自身的名称。这 是随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( ... );
“有一个方法product_标记用于获取值,但它无法设置值。”-因为“使用此方法的主要原因是,如果子类希望使用其他产品名称,则可以重写它。”。因此,如果您想要一个不同的值,可以创建HTTP::Daemon子类并重写这个方法。