在AJAX中执行Perl/CGI脚本而不使用服务器

问题描述:

我有一个Perl和一个CGI文件,我想通过它从数据库中获取数据。我有一个用户界面,我尝试使用AJAX调用,它将打击perl(.pl)或( .cgi)文件并以JSON格式获取响应。我通过运行命令提示符来检查perl/cgi文件,它工作正常。这就是我如何在command prompt运行我的代码:在AJAX中执行Perl/CGI脚本而不使用服务器

D:\>PerlExecutables\strawberry_32\perl\bin\perl.exe C:\Users\UserXYZ\Desktop\PerlExamples\test.cgi

的原因是我不能做我的机器上的任何一种安装方式,也是我不想通过服务器像ApacheIIS来运行它。 这是如何实现的?通过传递perl.exe路径执行或其他选择,是否有任何方法可以使脚本在AJAX中工作?

谢谢!

+4

如果您可以运行Perl并部署CGI脚本,则还可以在本地主机上部署充当Web服务器的Perl程序。一个HTTP服务器肯定需要参与,浏览器将不允许你直接运行程序。 – Thilo

+1

你可能想检查基于perl的web服务器,http://mojolicious.org/perldoc/Mojo/Server/CGI –

+0

@Thilo我找到了https://metacpan.org/pod/HTTP::Daemon,但每次URL保持不变如果你可以运行提供的示例 –

一种方法是使用Plack::App::CGIBin。它允许您使用PSGI/Plack协议将CGI脚本安装为应用程序。

use Plack::App::CGIBin; 
use Plack::Builder; 

my $app = Plack::App::CGIBin->new(root => "/path/to/cgi-bin")->to_app; 
builder { 
    mount "/cgi-bin" => $app; 
}; 

保存,作为myapp.psgi(或任何你的东西被称为),并像这样运行:

$ plackup myapp.psgi 

默认情况下,它会打开一个服务器上的3000端口上的本地主机。您将需要能够安装Perl模块。既然你有草莓Perl不应该是一个问题。在最坏的情况下,只需使用local :: lib即可。

您还需要能够打开端口进行收听。如果你不能找到其他解决方案,而不是让管理员安装一个真正的全尺寸Web服务器。


PSGI协议和Plack工具是一个简单易用的CGI替代品。它们让你变得非常灵活,同时使持续运行大型应用程序变得容易。