Jquery windows上的Apache 403错误(禁止)
我正在使用Apache,并使用jQuery从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
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>