收藏
回答

微信Android端在服务器已关闭HTTP/2的情况下仍强制使用h2协议,导致请求404(非常着急)

问题类型 API/组件名称 微信版本 基础库版本
Bug wx.request / uni.request 8.0.68.3020 WeChatLib: 3.14.3

问题现象:

小程序在 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 ✅

关键证据:

  1. curl 输出:ALPN, server accepted to use http/1.1(服务器拒绝 h2)
  2. 真机调试 Network 面板显示:protocol: h2(客户端仍用 h2)

补充验证:

同一套代码,将接口地址指向测试服务器时,所有请求正常,不会出现 404。说明问题与正式服务器的域名相关。

我的问题:

  1. 为什么 enableHttp2: false 在开发工具/真机调试有效,但在体验版/线上版无效?
  2. 服务器已拒绝 HTTP/2,但微信 Android 客户端仍发起 HTTP/2 请求,是否是微信客户端的 Bug?
  3. 如何强制微信客户端(特别是线上版)使用 HTTP/1.1?



最后一次编辑于  04-15
回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员--阳光
    社区技术运营专员--阳光
    04-16

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    04-16
    有用
    回复 4
    • 西亚
      西亚
      04-16
      感谢回复。
      按照要求创建了最小代码片段,但在该代码片段中无法复现 404 问题。代码片段中使用相同的 wx.request 请求同一接口,返回正常。
      然而在完整项目中,同一段请求代码、同一个 AppID、同一台服务器,就会出现 404。
      已做的排查:
      完整项目中使用原生 wx.request(绕过 uni-app 封装),同样返回 404
      完整项目换测试服务器(不同 IP)后正常
      完整项目换域名(同 IP)无效
      排除请求 Header、分包预加载、App.vue 逻辑等问题
      问题锁定在「完整项目编译产物」与「正式服务器 IP」的组合上。代码本身没有问题,纯净项目中请求正常。
      请问官方:
      是否需要我提供完整项目的编译后代码(unpackage/dist/dev/mp-weixin/ 目录)?
      是否有其他方式可以进一步定位问题?
      感谢支持!
      04-16
      回复
    • 西亚
      西亚
      04-17
      环境:
      微信版本: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
      04-17
      回复
    • 社区技术运营专员--阳光
      社区技术运营专员--阳光
      04-17回复西亚
      复现后麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,提供一下微信号,时间点
      04-17
      回复
    • 西亚
      西亚
      04-17
      已上传日志
      微信号:xxy249251
      时间点:2026年4月17日 13:24 左右进入模拟考试出现404
      日志上传时间:13:25
      04-17
      回复
  • 西亚
    西亚
    04-16

    体验版跟扫码预览报错

    04-16
    有用
    回复
登录 后发表内容