Laravel部署Heroku后Ajax文件上传遇301/302重定向问题求助
嘿,我之前在Heroku部署Laravel应用时也碰到过类似的Ajax上传重定向问题,给你几个实际排查的方向,应该能解决:
先检查APP_URL环境变量:Heroku默认强制HTTPS,要是你的
APP_URL配置成了HTTP地址(比如http://xxx.herokuapp.com),Laravel会自动触发HTTPS重定向,直接打断你的Ajax请求。去Heroku的「Settings」->「Config Vars」里把APP_URL改成完整的HTTPS地址(比如https://your-app-name.herokuapp.com)试试。确认控制器的响应逻辑:别小看这个,我之前就是不小心在上传成功后用了
redirect()->back()而不是response()->json()。仔细检查你的上传处理方法,确保最后是返回JSON响应,比如:return response()->json([ 'status' => 'success', 'message' => '文件上传完成', 'file_path' => $file->url() ]);另外,如果有异常捕获逻辑,别直接重定向,要返回JSON格式的错误信息,比如:
catch (\Exception $e) { return response()->json(['error' => $e->getMessage()], 500); }检查文件上传大小限制:Heroku的PHP默认上传限制可能比较小,要是你上传的文件超过了
upload_max_filesize或post_max_size,服务器会返回错误,而Laravel的默认错误处理可能会把它转成首页重定向。去Heroku的Config Vars里添加这两个变量:PHP_UPLOAD_MAX_FILESIZE=10M(根据你的需求调整大小)PHP_POST_MAX_SIZE=10M
验证存储驱动配置:如果Heroku上用了云存储(比如AWS S3),一定要确认存储相关的环境变量配置正确——比如AWS密钥、桶名、区域这些。要是存储失败,你的代码必须捕获异常并返回JSON,不能让框架自动重定向。
用Heroku日志定位问题:这是最有效的方法!运行
heroku logs --tail命令实时查看日志,当你发起上传请求时,盯着日志看:有没有走到控制器的代码?有没有抛出异常?重定向是哪个环节触发的?日志里的信息能帮你精准定位问题。
内容的提问来源于stack exchange,提问作者codelearner

