问题现象:
小程序在 Android 端偶发性地出现 404 错误,iOS 正常。后端 Nginx 已关闭 HTTP/2(listen 443 ssl 无 http2),服务器本机 curl 测试确认 ALPN 协商结果为 http/1.1,但微信开发者工具的真机调试面板中,Network 显示 protocol: h2,请求返回 404,后端 Nginx 无任何日志。
补充说明:
在微信开发者工具和真机调试环境下,加上 enableHttp2: false 和 enableQuic: false 后,请求正常,不会出现 404;去掉这两个设置后,立即出现 404。但同样的代码,发布为体验版或线上版后,即使保留了这两个设置,问题依然存在。
已尝试的前端设置:
options.enableHttp2 = false
options.enableQuic = false
已排查的服务器端:
- Nginx 已移除 http2 参数 ✅
- CDN 已关闭 HTTP/2 ✅
- curl 测试证明服务器仅支持 HTTP/1.1 ✅
关键证据:
- curl 输出:
ALPN, server accepted to use http/1.1(服务器拒绝 h2) - 真机调试 Network 面板显示:
protocol: h2(客户端仍用 h2)
补充验证:
同一套代码,将接口地址指向测试服务器时,所有请求正常,不会出现 404。说明问题与正式服务器的域名相关。
我的问题:
- 为什么
enableHttp2: false在开发工具/真机调试有效,但在体验版/线上版无效? - 服务器已拒绝 HTTP/2,但微信 Android 客户端仍发起 HTTP/2 请求,是否是微信客户端的 Bug?
- 如何强制微信客户端(特别是线上版)使用 HTTP/1.1?

请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
按照要求创建了最小代码片段,但在该代码片段中无法复现 404 问题。代码片段中使用相同的 wx.request 请求同一接口,返回正常。
然而在完整项目中,同一段请求代码、同一个 AppID、同一台服务器,就会出现 404。
已做的排查:
完整项目中使用原生 wx.request(绕过 uni-app 封装),同样返回 404
完整项目换测试服务器(不同 IP)后正常
完整项目换域名(同 IP)无效
排除请求 Header、分包预加载、App.vue 逻辑等问题
问题锁定在「完整项目编译产物」与「正式服务器 IP」的组合上。代码本身没有问题,纯净项目中请求正常。
请问官方:
是否需要我提供完整项目的编译后代码(unpackage/dist/dev/mp-weixin/ 目录)?
是否有其他方式可以进一步定位问题?
感谢支持!
微信版本:8.0.68 及 8.0.70 均复现
基础库版本:3.14.3
设备:HONOR 20i
复现步骤:
使用 Android 手机扫描体验版二维码或打开线上版,进入小程序
点击底部 TabBar 的「考试」页面
点击「模拟考试」入口
页面发起请求,返回 404
关键特征:
问题为偶发性、间歇性出现
出现 404 后,过一段时间自动恢复正常,过一段时间又可能再次出现
升级微信到 8.0.70 后问题依然存在
iOS 端始终正常
后端 Nginx 日志中无任何请求记录
已做的排查:
代码片段无法复现
已排除 Header、分包预加载、App.vue 等因素
服务器端已确认 ALPN 协商为 http/1.1
微信号:xxy249251
时间点:2026年4月17日 13:24 左右进入模拟考试出现404
日志上传时间:13:25