HTTP :: Request用标头中的连字符替换下划线

时间:2018-08-02 21:35:06

标签: perl http header

使用HTTP::Request中的LWP::UserAgent指定包含下划线的自定义标头时,下划线将更改为连字符:

use LWP::UserAgent;

my $rq = HTTP::Request->new("GET", "http://cpan.org");
$rq->header("X-FOO_BAR", "xyzzy");
print $rq->as_string;

输出:

GET http://cpan.org
X-FOO-BAR: xyzzy

有没有办法关闭此行为?

  • perl v5.26.2
  • LWP:UserAgent 1.9601
  • Linux 4.17.8-1-ARCH

2 个答案:

答案 0 :(得分:11)

根据HTTP::Headers中“非规范字段名称”下的文档,尝试用前导:命名标题:

  

标头字段名称的拼写通常会规范化,包括从'_'到'-'的转换。有些应用程序不合适。在字段名称前加上“:”可让您强制使用特定的拼写。

答案 1 :(得分:0)

在尝试通过CGI::Session在页眉中写一个位置时,我也遇到了同样的问题。我通过将下划线替换为%5f来解决了该问题,并且对我有用。对于您而言,这可能有效:

$rq->header('X-FOO%5fBAR', "xyzzy");