-3

我有一个 Perl 脚本,Main.pl它读取文本并输出 XML 文档。当我通过 SSH 连接到我的 Unix 服务器并从命令行运行脚本时,它会输出正确的 XML;但是当我http://localhost/Main2.pl在浏览器中访问时,它只显示 Perl 代码,当我尝试在启用 jQuery 的网页中向它发布(使用$.post("http://localhost/Main2.pl"))时,它不起作用。

我究竟做错了什么?

您可以在http://moxie.cs.oswego.edu/~cmunger2/coursework/Poetry_project/Main2.pl看到 Perl 脚本;尝试使用它的页面是http://moxie.cs.oswego.edu/~cmunger2/coursework/Poetry_project/index.html

4

2 回答 2

3

Perl 脚本在服务器上执行,而 JavaScript 在用户机器上执行。因此,您需要配置您的 Web 服务器以允许执行脚本,以及它们可以执行的路径。这是因为当从 Web 运行时,您基本上允许任何人运行代码在您的服务器上,这可能是一个很大的安全问题。您可以在 SSH 时正常执行脚本,因为您已经以特权用户身份登录。出于我提到的安全原因,Web 权限被锁定。

通常,大多数 Web 服务器允许从默认/cgi-bin目录执行 Perl 脚本,并且它们通常以.cgi扩展名命名。有时服务器只允许.cgi执行脚本,尽管它们可以与脚本完全相同.pl

我会研究如何从您的网络服务器配置可执行文件,或者如果您使用的是网络主机(或者看起来您正在使用大学服务器),请研究它们如何配置可执行文件访问。可能已经有一个默认的可执行区域,例如/cgi-bin.

您的特定大学服务器完全有可能不允许可执行访问,但是在您进行一些研究/询问之前您不会知道。目录的存在/不存在/cgi-bin可能是一个迹象。

于 2013-02-20T23:45:23.233 回答
2

服务器未配置为从该位置运行 CGI 脚本。

此外,即使是这样,您也会收到500错误,因为您的 Perl 脚本不是正确的 CGI 脚本。至少,您需要输出一个标头,指定您返回的内容类型以及与 XML 文档的编码相匹配的编码。

于 2013-02-20T23:52:32.450 回答