CGI脚本通信

时间:2015-01-06 16:31:53

标签: perl cgi lwp lwp-useragent

我有两个用Perl编写的CGI脚本,我想在两者之间实现以下通信序列。脚本A向脚本B发送POST请求,然后它应该等待B通过查询数据库来执行某种类型的验证,然后B将成功或失败发送回A以及自定义代码,例如: 1122特定于我的应用程序和A继续执行适当的。这是否可以通过LWP框架实现?

我尝试从A发送POST请求到B,然后使用

在脚本A中等待
 while(<STDIN>) {
     $response .= $_;
 }

直到它收到来自B的回复(另一个POST),但这不起作用A只是忽略SDTIN循环并继续。

毋庸置疑,我对CGI完全陌生,我发现大多数答案都涉及对CGI脚本的简单POST或GET请求,但不是双向通信,其中一方必须等待另一方在验证后做出响应已经发生了。

1 个答案:

答案 0 :(得分:3)

您无需执行任何操作即可使脚本等待响应。 LWP默认是同步的。

只需提出请求,然后正常阅读$res->content;(不是STDIN!)(有关扩展示例,请参阅the documentation)。

如果您正在使用CGI,则不应直接触摸STDIN。理想情况下,您将使用Plack/PSGI,因此您将通过Plack API(或构建在其上的框架)访问所有输入。如果您正在使用遗留代码,那么您可能会使用CGI.pm,它提供了自己的API来读取输入(通过param)。


  

毋庸置疑,我对CGI完全陌生,我发现大多数答案都涉及对CGI脚本的简单POST或GET请求,但不是双向通信,其中一方必须等待另一方在验证后做出响应已经发生了。

发出简单的POST或GET请求。

  1. 浏览器向A.cgi
  2. 发出请求
  3. A.cgiB.cgi
  4. 发出请求
  5. B.cgi输出回复
  6. A.cgi读取该回复并对其执行某些操作
  7. A.cgi输出回复
  8. 浏览器收到该回复