我有一个Perl脚本Main.pl
,它读取文本并输出XML文档。当我通过SSH连接到我的Unix服务器并从命令行运行脚本时,它会输出正确的XML;但是当我在浏览器中访问http://localhost/Main2.pl
时,它只显示Perl代码,当我尝试在支持jQuery的网页(使用$.post("http://localhost/Main2.pl")
)中对其进行POST时,它不起作用
我做错了什么?
您可以在http://moxie.cs.oswego.edu/~cmunger2/coursework/Poetry_project/Main2.pl看到Perl脚本;试图使用它的页面是http://moxie.cs.oswego.edu/~cmunger2/coursework/Poetry_project/index.html。
答案 0 :(得分:3)
Perl脚本在服务器上执行,而JavaScript则在用户的机器上执行。因此,您需要配置Web服务器以允许执行脚本,以及可以执行哪些路径。这是因为从Web运行时,您基本上允许任何人运行代码在您的服务器上,这可能是一个很大的安全问题。您可以在SSH时执行您的脚本,因为您已以特权用户身份登录。由于我提到的安全原因,Web权限被锁定。
通常,大多数Web服务器允许从默认的/cgi-bin
目录执行Perl脚本,并且它们通常以.cgi
扩展名命名。有时服务器只允许执行.cgi
脚本,尽管它们可能与.pl
脚本完全相同。
我将研究如何从您的Web服务器配置可执行文件,或者如果您使用的是Web主机(或看起来您正在使用大学服务器),请查看它们如何配置可执行文件访问。可能已经有一个默认的可执行区域,例如/cgi-bin
。
您的特定大学服务器完全有可能不允许可执行访问,但在您进行一些研究/询问之前,您不会知道。 /cgi-bin
目录的存在/不存在可能是一个明显的标志。
答案 1 :(得分:2)
服务器未配置为从该位置运行CGI脚本。
此外,即使它是,您也会收到500
错误,因为您的Perl脚本不是正确的CGI脚本。至少,您需要输出一个标题,指定您要返回的内容类型以及与XML文档编码匹配的编码。