[英]Ajax request in Drupal gives 403
我在Drupal中执行Ajax请求。 我正在向自定义PHP文件发出POST请求,该请求将压缩文件。 但是,当我发送长文件名数组时,我在控制台中收到一条错误消息。
POST http://www.example.com/url/zip-file.php 403 (Forbidden)
我的帖子请求如下所示:
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
它可以使用一些文件名,但是随着我添加更多文件名,出现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请求如下所示:
$.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错误(据我了解)。
首先,我将在维基页面后面解释Forbidden 403
含义:
Web服务器可能响应client
对网页的request
而返回HTTP 403 Forbidden
状态,或者可能指示可以访问该服务器并处理该请求,但refuses
采取任何进一步的措施。 HTTP status code 403
响应是Web服务器被配置为拒绝客户端访问所请求资源的结果。
可能导致403 Forbidden response
的常见请求是由Web浏览器执行的针对Web页面的HTTP GET request
,以检索页面以在浏览器窗口中显示给用户。 对于其他类型的请求,Web服务器也可能返回403禁止状态。
您可能会获得403
状态的原因:
page callback
属性,为此您可以在此处检查hook_menu()
的文档。 如果所涉及的菜单项不存在父项,则它将返回“ Access denied
。 即使在解决当前用户对您的菜单项的访问权限之前,也会发生这种情况; 因此access callback
并不重要。 解决方案可能是:
ajax post
:
'访问回调'=>'用户访问',
Jquery
降级。 原来是我们的ModSecurity防火墙阻止了POST请求。 我的主人帮助我解决了这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.