Php Drupal中的Ajax请求给出403

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

我正在用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%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我的错,被我自己的想法所困扰,所以我把问题看错了。另外,提出一个单独的问题会更好