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请求。
- 浏览器向
A.cgi
发出请求
A.cgi
向 B.cgi
发出请求
B.cgi
输出响应
A.cgi
读取该响应并对其进行处理
A.cgi
输出响应
- 浏览器收到该响应
我有两个用 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请求。
- 浏览器向
A.cgi
发出请求
A.cgi
向B.cgi
发出请求
B.cgi
输出响应A.cgi
读取该响应并对其进行处理A.cgi
输出响应- 浏览器收到该响应