CGI脚本通讯

CGI script communication

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

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

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

直到它从 B(另一个 POST)收到回复,但这不起作用,因为 A 简单地忽略了 SDTIN 循环并继续进行。

不用说我对 CGI 完全陌生,我发现的大多数答案都涉及对 CGI 脚本的简单 POST 或 GET 请求,但不是双向通信,其中一端必须等待其他人在验证发生后做出回应。

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

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

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


Needless to say I am completely new to to CGI and most answers I have found involve a simple POST or GET request to a CGI script but not a two way communication where one end has to wait for the other to respond after a validation has taken place.

正在发出简单的POST或GET请求。

  1. 浏览器向 A.cgi
  2. 发出请求
  3. A.cgiB.cgi
  4. 发出请求
  5. B.cgi 输出响应
  6. A.cgi 读取该响应并对其进行处理
  7. A.cgi 输出响应
  8. 浏览器收到该响应