You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AJAX上传图片提交FormData到Laravel托管服务器请求参数为空本地正常

重要提示!该问题仅出现在托管服务器上,本地环境上传完全正常

排查及解决方案

  • 检查服务器层面的上传限制
    先通过phpinfo()确认托管服务器的PHP配置参数upload_max_filesize、post_max_size是否大于你设置的500KB文件限制。如果使用Nginx作为Web服务器,还要检查client_max_body_size配置是否足够;使用Apache的话检查LimitRequestBody参数配置。
  • 排查请求重定向丢失payload问题
    托管环境通常会配置HTTP强制跳HTTPS、www域名跳非www域名这类规则,如果你的AJAX请求地址和当前页面访问的协议、域名不一致,触发301/302重定向时,POST请求的请求体会被自动清空,请求方法也会转为GET。
    解决方法:直接把AJAX请求的url改为和当前页面完全一致的协议域名前缀,或者修改Web服务器的重定向规则为307重定向(307重定向会保留原请求方法和请求体)。
  • 补充CSRF请求头
    你当前的AJAX请求未携带Laravel要求的CSRF令牌,本地环境可能关闭了CSRF校验或者配置宽松才未触发问题。可以先在页面头部添加meta标签:
    <meta name="csrf-token" content="{{ csrf_token() }}">
    
    然后在AJAX配置里添加请求头参数:
    headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
    
  • 验证原始请求内容
    可以在控制器最开头打印原始请求输入,判断是服务器层面清空了请求还是Laravel解析问题:
    dd(file_get_contents('php://input'));
    
    如果输出为空,说明请求在到达PHP之前就已经被Web服务器或者托管侧的安全WAF拦截清空了,可以联系主机商确认安全规则配置。如果有输出,说明是Laravel侧的中间件修改了请求,检查app/Http/Kernel.php里注册的全局中间件是否有对上传请求做过滤处理。

内容的提问来源于stack exchange,提问作者MuAf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:36:03