Firefox下含文件的FormData请求偶发无响应问题排查求助
问题描述
某网站通过XMLHttpRequest和FormData对象向服务器发送带文件的请求,多数情况正常,但偶尔会出现无服务器响应、无响应头、无返回内容的情况。网络监控仅能看到请求头,无法获取HTTP错误码;多次重试请求可成功。
该问题仅出现在Firefox 101、102、103.0b7版本,Firefox 97、100、101便携版无此问题;Vivaldi 5.3.2679.68和Edge 103.0.1264.49也无问题。
日志信息
- FPM访问日志显示:
error 500 - Apache访问日志显示:
error 400 - Apache错误日志显示:
proxy_fcgi:error (103) Software connection abort: [client IP-Address:port] AH01075: Error dispatching request to : (reading input brigade), referer : sender-url(已替换真实IP-Address:port和sender-url)
服务器配置
$> php -v PHP 7.4.28 (cli) (built: Feb 17 2022 16:17:19) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies $> apache2 -v Server version: Apache/2.4.53 (Debian) Server built: 2022-03-14T16:28:35
编辑补充:Firefox 104及后续版本该问题已解决,103版本仍存在此bug。
可排查的方向
- 抓包对比异常与正常请求:用Wireshark或浏览器网络面板,查看两类请求的
Content-Length、Transfer-Encoding等头部,确认Firefox异常版本是否存在报文截断、头部参数异常的情况。 - 调整Apache与PHP-FPM的连接参数:修改
php-fpm.conf的pm.max_children、pm.process_idle_timeout,或Apache的ProxyTimeout、Timeout值,排查是否因连接超时、进程资源不足导致请求中断。 - 校验前端FormData构建逻辑:检查代码中是否在文件添加后、发送请求前存在异步操作,导致FormData状态异常;针对Firefox特定版本测试,确认是否存在文件流未完全写入就发送请求的情况。
- 测试不同文件场景:验证问题是否集中在特定大小(接近
upload_max_filesize限制)或类型的文件上,排查Firefox在大文件分块上传时的逻辑错误。 - 查看PHP-FPM详细错误日志:除访问日志的500错误,检查
php-fpm.log是否有内存溢出、文件写入失败等细节,确认后端是否因请求异常崩溃。 - 调整Apache的
mod_proxy_fcgi配置:检查ProxyFCGIBackendType、ProxyFCGISetEnvIf等参数,确保请求头正确传递到PHP-FPM。
内容的提问来源于stack exchange,提问作者Bea_G
相关产品推荐
相关产品推荐

