Php Drupal中的Ajax请求给出403
我正在用Drupal做一个Ajax请求。我正在向一个定制的PHP文件发出POST请求,该文件将压缩这些文件。但是当我发送一个长文件名数组时,我在控制台中收到一条错误消息Php Drupal中的Ajax请求给出403,php,jquery,ajax,drupal,http-status-code-403,Php,Jquery,Ajax,Drupal,Http Status Code 403,我正在用Drupal做一个Ajax请求。我正在向一个定制的PHP文件发出POST请求,该文件将压缩这些文件。但是当我发送一个长文件名数组时,我在控制台中收到一条错误消息 POST http://www.example.com/url/zip-file.php 403 (Forbidden) 我的Post请求如下所示: files_array[]:/long_url/really%20long%20filename.pdf files_array[]:/long_url/really%20lon
POST http://www.example.com/url/zip-file.php 403 (Forbidden)
我的Post请求如下所示:
files_array[]:/long_url/really%20long%20filename.pdf
files_array[]:/long_url/really%20long%20filename.pdf
files_array[]:/long_url/really%20long%20filename.pdf
files_array[]:/long_url/really%20long%20filename.pdf
files_array[]:/long_url/really%20long%20filename.pdf
$.ajax({
type: 'POST',
url: Drupal.settings.basePath + Drupal.settings.pathToTheme + '/includes/zip-file.php',
data: {
'files_array': files_array
},
success: function(data) {
var result = JSON.parse(data);
files_array = [];
if(result.success) {
window.location.href = Drupal.settings.basePath + result.file_path;
} else {
alert('Failed to create zip file.');
}
$('#table-actions').find('.ajax-load').hide();
}
})
它适用于一些文件名,但随着我添加更多文件名,出现403错误,我的函数失败
有人知道它可能是什么吗
我在.htaccess文件中有这些值
php_value upload_max_filesize 200M
php_value post_max_size 200M
php_value memory_limit 200M
php_value max_input_vars 2500
我已经检查了phpinfo以确保它们工作正常
javascript请求如下所示:
files_array[]:/long_url/really%20long%20filename.pdf
files_array[]:/long_url/really%20long%20filename.pdf
files_array[]:/long_url/really%20long%20filename.pdf
files_array[]:/long_url/really%20long%20filename.pdf
files_array[]:/long_url/really%20long%20filename.pdf
$.ajax({
type: 'POST',
url: Drupal.settings.basePath + Drupal.settings.pathToTheme + '/includes/zip-file.php',
data: {
'files_array': files_array
},
success: function(data) {
var result = JSON.parse(data);
files_array = [];
if(result.success) {
window.location.href = Drupal.settings.basePath + result.file_path;
} else {
alert('Failed to create zip file.');
}
$('#table-actions').find('.ajax-load').hide();
}
})
编辑:我还尝试完全清空PHP文件,以确保据我所知,这不是一个PHP错误
首先,我将在下一页解释禁止403的含义:
web服务器可以返回HTTP 403禁止状态以响应客户端对网页的请求,或者它可以指示可以访问服务器并处理该请求,但拒绝采取任何进一步的操作。HTTP状态代码403响应是web服务器配置为拒绝客户端访问请求的资源的结果
可能导致403禁止响应的常见请求是由web浏览器执行的对网页的HTTP GET请求,以检索该网页以在浏览器窗口中显示给用户。web服务器也可以为其他类型的请求返回403禁止状态
您可能获得403状态的原因:
这可能是因为您没有定义页面回调属性,为此,您可以查看hook_菜单的文档。如果相关菜单项的父项不存在,则返回拒绝访问。甚至在解决当前用户对菜单项的访问之前,也会发生这种情况;所以访问回调实际上并不重要。
解决办法可能是:
将此添加到ajax帖子:
“访问回调”=>“用户访问”
在管理主题中降级Jquery。
如果这些解决方案都不起作用,你可能想看看。
原来是我们的ModSecurity firefall阻止了POST请求。我的主人帮我解决了这个问题 非常感谢您的详细回答!:对不起,如果我有点慢。我到底应该在哪里添加“访问回调”=>“用户访问”?@superhenke将其放在类型下面,另外它可能是一个解决方案,不是100%保证,但希望他们能帮上忙。好的,我明白了。我会在周一测试这个。再次感谢你的帮助。如果你的答案有效,我会记得检查你的答案是否正确@超级英雄没问题希望这能帮到你。@Umair我的错,被我自己的想法所困扰,所以我把问题看错了。另外,提出一个单独的问题会更好