Laravel jQuery AJAX生产环境特定场景偶发403错误求助
解决AWS WAF拦截Laravel AJAX更新订单的403问题
一、定位WAF具体拦截规则
- 登录AWS控制台,进入WAF & Shield服务
- 找到绑定到EC2对应负载均衡/CloudFront的Web ACL
- 查看规则匹配统计数据,重点关注触发拦截的规则ID和描述
- 若已开启WAF日志(存储在S3),直接筛选对应请求的日志条目,查看
terminatingRuleId和terminatingRuleType字段,明确拦截请求的具体规则 - 临时测试排查:可逐个禁用Web ACL中的规则,或创建仅保留必要规则的测试用Web ACL,测试编辑他人订单的请求是否恢复正常,快速定位问题规则
二、针对拦截规则的调整方案
结合“仅编辑他人订单触发拦截”的场景,大概率是请求内容差异触发了WAF,对应调整方式如下:
- 托管规则误拦截:如果是AWS托管规则组(如SQL注入/XSS防护规则)误判,可给对应规则添加规则例外,指定订单更新接口路径(如
/orders/{id})跳过该规则检查 - 请求大小限制触发:若编辑他人订单时提交的数据量更大,触发了WAF的请求大小限制规则,直接调整规则中的请求大小阈值即可
- 自定义规则误匹配:如果是自定义WAF规则(如基于请求头、参数值的规则)导致拦截,修改规则匹配条件,将超级管理员的合法跨用户编辑请求排除在外
三、验证调整效果
- 调整WAF规则后,重新测试编辑他人订单的AJAX请求,确认403错误消失
- 同步测试编辑自己订单的请求,确保原有功能不受影响
- 检查WAF日志,确认目标请求不再触发拦截规则
内容的提问来源于stack exchange,提问作者HERNANDEZ ORTEGA ERICK EDUARDO
相关产品推荐
相关产品推荐

