【问题标题】:.pl links downloading and not opening in new browser tab.pl 链接正在下载,但未在新的浏览器选项卡中打开
【发布时间】:2017-03-13 03:45:07
【问题描述】:

我是 cgi 和 Perl 的新手,但我正在尝试使用 perl 脚本显示网页的 ENV。我在 vhost1 目录中创建了一个 index.html 页面,该页面指向我的 cgi-bin 目录中的 .pl 页面。目录路径依次为/var/www/html/vhost1/index.html和/var/www/html/vhost1/cgi-bin/first.pl。 我的 index.html 代码如下

<html>
<head>
</head>
<body>
<h1>Hello World!</h1>
<a href = "cgi-bin/first.pl" target="_blank"> My First Perl Page</a>
</body>
</html>

我的 .pl 页面看起来像

#!usr/bin/perl

print "Content-type: text/html \n\n ";
print "Hello, Nate";
foreach $key (sort keys %ENV)
{
print "$key -> $ENV($key) <br>\n";
}

我正在使用 Centos7 来完成这个项目,我主页的 URL 路径是 http://131.183.223.173/vhost1/

我希望我的 ENV 结果显示在新标签中,而不是下载到我的计算机上。

【问题讨论】:

  • 您需要告诉您的服务器将 .pl 文件(或 cgi-bin 目录中的所有文件)视为 CGI 脚本
  • 另外,#!usr/bin/perl 应该是 #!/usr/bin/perl
  • 最后,您应该始终使用use strict; use warnings qw( all );。它会发现您的程序的主要和次要错误。 (不过,它不会发现您的 HTML 注入错误。)
  • 正如 ikegami 所指出的,#!usr/bin/perl 似乎是问题所在。
  • @SrihariKaranth:虽然#!usr/bin/perl 是这里的一个主要问题,但我很确定这不是导致这种行为的原因。 Web 服务器甚至没有尝试执行该程序。我从来没有见过这样配置的 Web 服务器,如果它不能成功执行 CGI 程序,它将返回源代码。这听起来像是一个重大的安全问题!

标签: perl cgi centos7


【解决方案1】:

这与您的 HTML 或 Perl 程序毫无关系。这取决于您的 Web 服务器配置。您的 Web 服务器(我假设是 Apache)需要配置为将 /var/www/html/vhost1/cgi-bin/ 识别为 CGI 目录。

您将需要在虚拟主机的配置文件中包含类似的内容。

ScriptAlias /cgi-bin/ "/var/www/html/vhost1/cgi-bin/"

或者

<Directory "/var/www/html/vhost1/cgi-bin/">
    Options +ExecCGI
    AddHandler cgi-script .pl
</Directory>

一旦这个问题得到解决,您将停止将源代码发送到您的浏览器。然而,到那时,您几乎肯定会得到一个“500 错误”页面。然后,您可以修复 CGI 程序中的错误(从不正确的 shebang 行和内容类型标题开始)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多