WordPress大长度ajax请求触发302跳转无响应问题咨询
WordPress admin-ajax.php 大请求302跳转问题修复方案
核心触发原因
300k级请求触发302跳转和请求逻辑本身无关,基本都是拦截规则或配置阈值导致:
- 共享主机默认PHP配置的POST请求大小、输入变量数阈值过低,请求超限时直接被服务器层拦截跳转
- cPanel默认开启的ModSecurity(WAF防火墙)规则对admin-ajax.php的大体积POST请求有默认拦截策略,触发后直接返回302
- 站点安装的WordPress安全插件自带请求拦截规则,大体积POST触发阈值后跳转
- 大请求时携带的WordPress nonce校验参数失效,权限校验失败后自动跳转
cPanel端可操作的修复步骤
- 调整PHP运行参数
登录cPanel找到「MultiPHP INI编辑器」(部分主机显示为PHP配置/PHP Options),选中站点对应PHP版本,修改以下配置项:post_max_size设置为64M(完全覆盖300k级请求需求,不要设置超过128M避免触发主机商限制)max_input_vars设置为3000(默认值多为1000,带多组数组参数的大请求很容易超限)max_input_time设置为120memory_limit设置为256M
保存配置后,若cPanel提供重启PHP按钮则点一次,没有的话等待1-2分钟配置自动生效即可。
- 调整WAF拦截规则
在cPanel找到「ModSecurity」选项,先临时关闭对应站点的WAF规则测试大请求是否恢复正常。如果关闭后请求正常,不要长期全局关闭WAF,进入「ModSecurity工具」查看拦截日志,找到拦截admin-ajax.php请求的对应规则ID,将该规则对admin-ajax.php路径加白即可。 - 补充校验项
上述操作完成后如果仍有跳转:- 临时禁用WordPress后台安装的安全类插件(比如Wordfence、iThemes Security)测试,找到插件内的POST请求大小限制、AJAX拦截配置,调大阈值或给admin-ajax.php加白
- 确认AJAX请求没有漏带WordPress nonce校验参数,部分缓存插件会缓存失效的nonce值,小请求刚好命中有效缓存就正常,大请求刷新nonce后参数不匹配就会触发校验失败跳转
注意:如果你的共享主机cPanel没有开放上述配置入口,不要通过修改.htaccess强行绕过服务器拦截规则,直接提交工单给主机商,说明你向admin-ajax.php发送的300k左右合法业务请求被302拦截,让运维调整对应WAF规则和PHP阈值即可,强行绕过规则容易被主机商判定为违规操作。
内容的提问来源于stack exchange,提问作者Rahul B
相关产品推荐
相关产品推荐

