HTTP::Request在标头中将下划线替换为连字符

8

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

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个回答

16

尝试在标题前加上前导:,如HTTP::Headers文档中“非规范化字段名”所述:

标头字段名称的拼写通常是规范化的,包括 '_' 到 '-' 的转换。但有些应用程序不适合这样做。在字段名称前加上 ':' 可以强制指定拼写。


是的,我正要发布... :) 已测试(v5.16) - zdim
那是我之前不知道的 CPAN 中一个被遗忘的角落。谢谢! - Borodin

0

我在尝试通过CGI::Session在页面头部写出位置时也遇到了同样的问题。我通过将下划线替换为%5f来解决了这个问题,并且它对我起作用了。在你的情况下,这可能会起作用:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接