Jquery windows上的Apache 403错误(禁止)

Jquery windows上的Apache 403错误(禁止),jquery,html,apache,Jquery,Html,Apache,我正在使用Apache,并使用jQuery从index.html发送一个ajax请求。get_data.pl是cgi-bin上的一个文件。我得到了403禁止的错误。任何人都会帮助我,并提前表示感谢 $.ajax({ async : true, type: "GET", url: "get_data.pl" }).done(function(msg){ alert("Data Saved: " + msg); }).fail(function(xmlHt

我正在使用Apache,并使用jQuery从
index.html
发送一个ajax请求。
get_data.pl
cgi-bin
上的一个文件。我得到了
403禁止的错误
。任何人都会帮助我,并提前表示感谢

$.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"} 
第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>

不允许超限
选项+执行CGI
AddHandler cgi script.cgi.pl
通融
我将.pl文件放在cgi-bin文件夹中,index.html放在htdocs文件夹中。
我试过Windows7、Win2k3 64位和Win2k3 32位。都有禁止的错误。我还使用了Apache的默认printenv.pl。

我认为您缺少运行
CGI
的权限,您可以在

简言之,在主配置文件(
https.conf
)中放入类似的内容:


选项+执行CGI
AddHandler cgi script.pl
希望它能帮助你前进

编辑

问题是用于访问脚本的路径不正确。日志文件显示,
Options ExecCGI在此目录下处于关闭状态:C:/Program Files(x86)/Apache Software Foundation/Apache2.2/htdocs/get_data.pl“
,而
get_data.pl
文件不在
htdocs
中,而是在
cgi bin
文件夹中。更改
url:“get_data.pl”“
ajax
调用中,在
cgi-bin
中定位脚本,解决了问题

显示您的
.htaccess
。我在conf文件夹中搜索了,但没有找到.htaccess。Apache2.2/manual文件夹下只有htaccess.html,我认为它不是您提到的配置文件。是否也禁止对同一目录(例如
/image.jpg
)的其他请求,或者它只是
.pl
文件?我可以从命令行运行它:cgi-bin>获取数据。是否安装了
mod_perl
,我已经做到了。我在httpd.conf中有add:AddHandler cgi script.cgi.pl,路径是Apache的默认cgi bin。有没有办法追踪问题?重要的是你也有
Options+ExecCGI
,但我想你有。是否检查错误日志文件?通常在
/var/log/apache2
下,但这可能与您的配置不同。是的,日志文件有帮助。我检查了日志文件显示:“Options ExecCGI在此目录下处于关闭状态:C:/Program Files(x86)/Apache Software Foundation/Apache2.2/htdocs/get_data.pl”事实上,get_data.pl文件不在htdocs文件夹中,而是在cgi bin文件夹中。当我调用客户端脚本“url:“get_data.pl”时,它默认为htdocs文件夹,而不是cgi-bin文件夹。如何分配给它?将cgi bin文件夹的路径添加到脚本中的url中,或者使用创建一个较短的url并引用该url。我认为cgi bin是Apache将找到的默认执行根目录,无需显式引用。我在引用url中使用短名称,现在就可以了。谢谢
<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>
<Directory /path/to/cgi-bin/>
    Options +ExecCGI
    AddHandler cgi-script .pl
</Directory>