javascript - 当发送的数组超过特定长度时,AJAX 调用返回 403
问题描述
我有一些 jQuery 代码通过 AJAX 调用向 PHP 脚本发送数据。
数据由具有两个属性的对象组成。
其中一个属性是字符串,由JSON.strinfigy(arrayofobjects)
对象数组获得。中的每个对象都arrayofobjects
包含 3 个属性,每个属性都是一个简单的字符串。中的对象数量arrayofobjects
会根据某些用户操作而变化。
问题是:当arrayofobjects
超过 25 个对象时,AJAX 调用失败并返回403 Forbidden
,因此无法进行任何调试。
似乎由 AJAX 产生JSON.stringify
并通过 AJAX 发送的字符串超过了最大长度。
Web 服务器是在 Ubuntu 18.04 上运行的 Apache2。不使用任何 PHP 框架。
我试过的:
- Apache mod_security 模块未激活
- 在 php.ini 中:display_errors = On、log_errors = On 和 error_reporting = E_ALL
- 在 apache2/error.log 上为每个用户设置写权限
- 正常工作的 apache2/error.log,但没有 AJAX 相关问题的痕迹,没有任何
403
错误的痕迹 - 调用脚本的 URL 正确
- 不是跨域调用
- 文件权限没问题,因为脚本在其他实例中被成功调用并且
arrayofobjects
包含少于 25 个元素时 - 我可以直接通过http访问被调用页面
- 增加
max_input_vars
的价值php.ini
AJAX调用的结构:
$.ajax({
url: "ajax/called_page.php",
type: 'post',
data: {action: "post_duty", content: JSON.stringify(arrayofobjects)},
dataType: "json",
success: function(data) {
do some DOM manipulation
}, error: function() {
alert('Contact webmaster');
}
解决方案
推荐阅读
- php - 从 Laravel 中的外部数据库导入数据
- java - 如何将 2 个字节从 byte[] 转换为 Char / short(2 个字节)?
- sql-server - 在 SQL Server 中添加不同的
- android - React Native Android 应用程序发布构建(使用 Hermes)仅在通过 Play 商店下载时很慢
- box - 无法将文件上传到盒子
- reactjs - 在 useEffect 中反应内存泄漏警告
- flutter - Firebase 存储 url 私有访问
- java - 尝试运行 appium 但应用程序自动关闭并显示错误
- python-3.x - 蟒蛇:任务得到了不好的收益:
- docker - 无法让 PostGis 图像改为用作本地文件