Perl中的原始POST数据?

时间:2012-12-10 07:36:04

标签: php perl http-post

在PHP中,php://input可以读取原始请求正文数据,这是我在这种情况下所需要的。然而,服务器端主干的其余部分都是用PERL编写的,所以我试图找到php://input的替代方法 - 我不能。

简短的问题:

如何在Perl中获取原始POST数据(请求正文)? (CGI变量绝对没有显示)。

谢谢!

2 个答案:

答案 0 :(得分:5)

来自CGI模块的文档,

  

如果POSTed数据不是application / x-www-form-urlencoded或multipart / form-data类型,则不会处理POSTed数据,而是在名为POSTDATA的参数中按原样返回。要检索它,请使用以下代码:

my $data = $query->param('POSTDATA');

答案 1 :(得分:-1)

要处理所有情况,包括 Content-Type multipart/form-data的情况,请先读取(并放回)原始数据,先于

use strict;
use warnings;

use IO::Handle;
use IO::Scalar;

STDIN->blocking(1); # ensure to read everything
my $cgi_raw = '';

{ 
  local $/; 
  $cgi_raw = <STDIN>;
  my $s;
  tie  *STDIN, 'IO::Scalar', \$s;
  print STDIN $cgi_raw;
  tied(*STDIN)->setpos(0);
}

use CGI qw /:standard/;
...
相关问题