【问题标题】:How to fetch HTTP headers in perl when using CGI使用 CGI 时如何在 perl 中获取 HTTP 标头
【发布时间】:2011-06-24 08:55:15
【问题描述】:

我正在使用 Perl/CGI/Apache 并且想要获取 X-Forwarded-For HTTP 标头。我该怎么做?

【问题讨论】:

    标签: perl apache http http-headers cgi


    【解决方案1】:

    除了少数特殊处理的标头外,CGI 将Header-Name: 的值存储在环境变量HTTP_HEADER_NAME 中。因此,X-Forwarded-For(如果存在于请求中)应该在 $ENV{HTTP_X_FORWARDED_FOR} 中找到。

    【讨论】:

    • @cjm,非常感谢。是否有任何 rfc 或协议或标准定义,Web 服务器以环境变量的方式将 http 标头传递给 cgi 进程,前缀为 HTTP_?
    • @hylepo, RFC 3875
    【解决方案2】:

    CGI有一个访问HTTP请求头域的方法,叫做“http”,所以你可以说:

    my $q = CGI->new()
    print $q->http('X-Forwarded-For');
    

    无论您是作为 CGI 运行,还是在 fastcgi、mod_perl 等中运行,这都有效...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 2017-11-05
      • 2012-10-25
      • 2015-10-23
      • 2014-04-18
      相关资源
      最近更新 更多