如何使用Perl的LWP提取非标准HTTP头?

时间:2010-10-26 09:45:49

标签: perl http header lwp

我正在使用一个Web应用程序,该应用程序在响应登录请求时发送一​​些非标准的HTTP标头。有问题的标题是:

SSO_STATUS: LoginFailed 

我尝试使用LWP :: Response将其提取为$response->header('SSO_STATUS'),但它不起作用。它适用于标准标题,例如Set-CookieExpires等。

有没有办法处理原始标题?

2 个答案:

答案 0 :(得分:7)

如果您看到HTTP::Headers的文档,则说明

  

标题字段名称拼写通常是规范化的   包括'_'到' - '的翻译。有一些应用在哪里   这不合适。使用“:”前缀字段名称可以使用   强制特定的拼写。例如,如果你真的想要一个标题字段   要显示为foo_bar而不是“Foo-Bar”的名称,您可以将其设置为   这样:

  $h->header(":foo_bar" => 1);
  

这些字段名称将以':'完整返回   $h->header_field_names$h->scan回调,但冒号确实如此   不在$h->as_string中显示。

答案 1 :(得分:4)

请参阅this thread on Perlmonks

您需要将标题字段的值作为$response->header('SSO-STATUS')访问。

在名称中设置带下划线的字段的语法:
$response->header(':SSO_STATUS' => 'foo');