1

我正在使用 Apache 并使用 jQuery 从index.html. 是get_data.pl一个文件cgi-bin。我得到了403 Forbidden error。任何人都会帮助我并提前感谢。

$.ajax({
    async : true,
    type: "GET",
    url: "get_data.pl"      
}).done(function(msg){
    alert("Data Saved: " + msg);
}).fail(function(xmlHttpRequest,statusText,errorThrown) {   
    console.log(JSON.stringify(xmlHttpRequest));
    console.log(statusText);
    console.log(errorThrown);       
});

我从控制台得到的:

{"readyState":4,"responseText":"<!DOCTYPE ...<title>403 Forbidden</title>...
<p>You don't have permission to access /get_data.pl\non this server.</p>\n</body>
</html>\n","status":403,"statusText":"Forbidden"} 

它是 Windows 7。我正在使用管理员帐户运行 Chrome。

过了一段时间,我还没有找到解决这个问题的方法。我想我应该为专家提供更多细节来重现我的问题。关于我的httpd.conf,我在原来的基础上改变了地方:第193行:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

我删除了 2 行:

Order allow,deny
Allow from all

第 343 行:

<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin">
      AllowOverride None
      Options None
      Order allow,deny
      Allow from all
</Directory>

我将此部分更改为:

<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
    Options  +ExecCGI
    AddHandler cgi-script .cgi .pl
    Allow from all
</Directory>

我将 .pl 文件放在 cgi-bin 文件夹中,将 index.html 放在 htdocs 文件夹中。我尝试了 Windows7、Win2k3 64 位和 WIn2k3 32 位。都有被禁止的错误。我也使用了 Apache 的默认 printenv.pl。

4

1 回答 1

1

我认为您缺少运行内容的权限,您可以在Apache 文档CGI中阅读有关如何启用它的信息

简而言之,在你的主配置文件(https.conf)中添加这样的内容:

<Directory /path/to/cgi-bin/>
    Options +ExecCGI
    AddHandler cgi-script .pl
</Directory>

希望对你有所帮助。

编辑
问题是用于访问脚本的路径不正确。日志文件Options ExecCGI is off in this directory: C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/get_data.pl"get_data.pl文件不在文件夹中htdocs时显示cgi-bin。更改调用以url: "get_data.pl"在其中定位脚本解决了该问题。ajaxcgi-bin

于 2013-10-10T09:50:36.820 回答