Windows上的Apache 403错误(禁止)

时间:2013-10-10 08:44:52

标签: jquery html apache

我正在使用Apache并使用来自index.html的jQuery发送ajax请求。 get_data.plcgi-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文件夹中,即htdocs文件夹中的index.html。 我试过Windows7,Win2k3 64bit和WIn2k3 32bit。所有人都有禁止的错误。我也使用了Apache的默认printenv.pl。

1 个答案:

答案 0 :(得分:1)

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

中了解如何启用它

简而言之,在主配置文件(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"调用中更改ajax以在cgi-bin中找到脚本可以解决问题。