Laravel环境下Axios发送GET请求params参数未传递到服务端问题
问题原因及解决方案
1. 最常见原因:Web服务器重写规则丢失查询参数
两台服务器的Web服务器(Nginx/Apache)重写配置存在差异,是该问题的最高发诱因,刚好符合你提到的POST请求正常、GET请求参数丢失的特征:
- Nginx场景下,常见错误配置为location块中的
try_files规则缺少查询参数传递项:
# 错误配置:不会将查询参数传递给index.php try_files $uri $uri/ /index.php; # 正确配置:末尾加上?$query_string 传递所有查询参数 try_files $uri $uri/ /index.php?$query_string;
- Apache场景下,检查站点根目录
.htaccess文件的重写规则是否带[QSA]标记,该标记用于保证重写时原有查询参数不丢失。
修改配置后重启Web服务即可验证是否恢复。
2. 中间件/请求过滤逻辑差异
- 检查有问题的服务器运行的Laravel代码分支,是否存在全局中间件修改、过滤了
$request的query参数,排查app/Http/Middleware下的全局注册中间件逻辑。 - 确认服务器是否部署了WAF、反向代理等中间层,是否存在过滤GET参数、未将查询参数透传到后端服务的规则。
3. FastCGI/PHP配置差异
检查有问题服务器的PHP配置:
- 是否安装了
suhosin等安全扩展,配置了参数过滤规则拦截了GET参数 - php-fpm配置中是否限制了QUERY_STRING的传递
快速验证方法
直接在浏览器地址栏访问你的域名/api/myCall?id=1&name=loser,如果返回结果仍为空,可100%确认问题出在服务端配置,与Axios无关。
内容的提问来源于stack exchange,提问作者matt
相关产品推荐
相关产品推荐

