在perl中读取没有CGI模块的cgi原始发布数据

时间:2015-12-25 11:02:11

标签: perl post cgi

在我的服务器上我没有安装CGI是否可以在没有该模块的情况下获取Raw Post Data?我试图检查CGI.pm的源代码,但没有找到任何结果。

1 个答案:

答案 0 :(得分:2)

您可以通过读取STDIN来提取POST数据。 (Viewing raw POST data

<强> paramExtractor.cgi

#!/usr/bin/perl

use strict;
use warnings;

my $buffer = '';
if($ENV{CONTENT_LENGTH}) { read(STDIN,$buffer,$ENV{CONTENT_LENGTH}); }
print "Content-type: text/plain\n\n";
print 'Post data is (' . length($buffer) . " chars):\n";
if( ! length($buffer) ) { $buffer = '[No POST data received]'; }
print $buffer;
exit;

<强> form.html

<form method="post" action="http://127.0.0.1/paramExtractor.cgi">
<table cellpadding="3">
<tr>
<td>Name:</td>
<td><input type="text" name="name" style="width:200px;"></td>
</tr><tr>
<td>Email:</td>
<td><input type="text" name="email" style="width:200px;"></td>
</tr><tr>
<td valign="top">Message:</td>
<td><textarea name="message" style="width:200px; height:75px;"></textarea></td>
</tr><tr>
<td> </td>
<td><input type="submit" style="width:200px;"></td>
</tr>
</table>
</form>