微信小程序打不开

经验技术

微信小程序,换服务器后,电脑端可以打开,使用微信开发者工具可以正常打开,使用手机就不行,部分手机也能打开,会是啥原因呢

解决思路

“电脑/开发者工具正常,手机不行,且只有部分手机不行” 99% 是真机环境差异导致的,按出现频率由高到低排查清单如下:


  1. SSL 证书链不完整(最常见)

    现象:

    • iOS 全部失败,Android 部分失败(高版本系统严格)。
    • 电脑浏览器因缓存或自动补链能打开。

    检测:

    https://myssl.com 输入域名 → 看“证书链”是否提示“缺少中间证书”。

    解决:

    在服务器补全中间证书(Nginx 把 fullchain.cer 放进 ssl_certificate 字段)。


  1. TLS 版本过低 / 加密套件不兼容

    微信真机要求 TLS≥1.2,且不能启用已淘汰的套件(如 3DES-CBC)。

    检测:

    https://www.ssllabs.com/ssltest → 最低支持协议若显示 TLS 1.0/1.1 就会失败。

    解决:

    服务器配置只保留 TLSv1.2 + TLSv1.3,加密套件用 ECDHE-RSA-AES128-GCM-SHA256 等现代套件。


  1. 域名未备案 / 解析未生效 / 本地 DNS 缓存

    电脑常走公司/校园 DNS 已刷新;手机仍用旧 DNS 或运营商缓存。

    解决:

    • 换 4G/5G 再测;
    • ping 域名 看解析是否指向新服务器;
    • 备案系统确认已变更接入商并审核通过。

  1. 小程序后台 request 合法域名未更新

    换服务器后若域名没变可跳过;

    若域名变更→ 登录 MP 后台 → 开发 → 开发设置 → 服务器域名 → 把新域名加进 request 合法域名,必须 HTTPS。


  1. 安卓系统时间错误 / 证书过期

    手机日期慢 1 天就会报 certificate has expired,电脑时间正确。


  1. 安卓 7.0 以下 不信任用户证书(抓包后忘记关)

    开过 Charles/Fiddler 会装根证书,关闭代理后部分低端机仍走用户证书 → 微信拒绝连接。重启手机或重置网络设置。


  1. 内容安全策略(CSP)/ HSTS 把 http 升级 https 导致

    若旧地址写过 Strict-Transport-Security 且含 includeSubDomains,换 IP 后首次 http 访问会被浏览器/系统强制 307 到 https,小程序端表现为空白。


快速自检脚本(让运维跑)

openssl s_client -connect 新域名:443 -servername 新域名 < /dev/null | grep "Verify return code"

返回 0(ok) 才算链完整;非 0 直接补证书链即可。


结论

先把 1. 证书链 和 2. TLS 版本 按上面工具检测一遍,90% 的“部分手机打不开”问题都能解决。

SSL

换阿里云的SSL证书即可