簡體   English   中英

HTTP::Daemon:如何在 HTTP-Header 中為服務器設置自定義值?

[英]HTTP::Daemon: How to set a custom value for Server in HTTP-Header?

我正在使用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用於獲取值,但它無法設置值。

文檔說你應該創建一個子類:

=item $d->product_tokens

返回此服務器用於標識自身的名稱。 這是與 C 響應 header 一起發送的字符串。 擁有此方法的主要原因是子類如果想使用另一個產品名稱可以覆蓋它。

默認值為字符串“libwww-perl-daemon/#.##”,其中“#.##”替換為該模塊的版本號。

因此,您編寫了一個小子類,然后使用您的子類制作 object:

use v5.12;
package Local::HTTP::Daemon {
    use parent qw(HTTP::Daemon);

    sub product_tokens { 
        ... # whatever you want
        }
    }


my $d = Local::HTTP::Daemon->new( ... );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM