收藏
回答

小程序登录请求报 ERR_CONNECTION_RESET 错误?

【问题描述】

小程序登录请求报 ERR_CONNECTION_RESET 错误,服务器日志显示请求已到达并返回200状态码,但小程序客户端仍然报错。


【环境信息】

- 小程序AppID:wx78879edfd566e8a7

- 小程序版本:体验版/正式版

- 基础库版本:3.x.x

- 服务器域名:https://api.zdvxsryedhtgvnmvbhgdrtysrydr.icu

- 服务器环境:Linux + Nginx + PHP 8.2


【服务器端配置】

- SSL证书:Let's Encrypt R13,证书链完整(已验证)

- 域名:api.zdvxsryedhtgvnmvbhgdrtysrydr.icu

- 服务器防火墙:443端口已开放

- Nginx配置:已正确配置超时和缓冲区

- API接口:curl测试完全正常,手机浏览器可以正常访问


【小程序配置】

- 域名已在小程序后台配置:https://api.zdvxsryedhtgvnmvbhgdrtysrydr.icu

- 格式完全正确,无多余字符


【测试结果】

1. ✅ curl命令可以正常访问API接口

2. ✅ 手机浏览器可以正常访问API接口(返回200)

3. ✅ 服务器日志显示请求已到达并返回200状态码

   - POST /api/auth/login HTTP/2.0" 200

   - OPTIONS /api/auth/login HTTP/2.0" 204

   - User-Agent包含 MicroMessenger/8.0.0

4. ✅ openssl s_client验证:SSL握手成功,证书链完整,TLS 1.3

5. ❌ 小程序报错:request:fail errcode:-101 cronet_error_code:-101 error_msg:net::ERR_CONNECTION_RESET



【问题分析】

所有服务器端配置都正确,服务器日志显示请求已到达并返回200状态码,

但小程序的请求在客户端被重置了。这很可能是微信客户端网络层面的问题。


【已尝试的解决方案】

1. ✅ 检查SSL证书链完整性

2. ✅ 检查Nginx配置(超时、缓冲区)

3. ✅ 检查CORS响应头

4. ✅ 检查域名配置

5. ✅ 清除小程序缓存

6. ✅ 检查基础库版本

7. ✅ 检查手机网络环境


【期望结果】

希望微信技术支持能够帮助排查为什么服务器返回200但小程序客户端仍然报ERR_CONNECTION_RESET错误。

回答关注问题邀请回答
收藏

5 个回答

  • 神经蛙
    神经蛙
    12-15

    看看中间挂代理了吗

    12-15
    有用 1
    回复
  • sun
    sun
    1天前

    都散了吧,域名没备案被拦截了,不用查这查那的。

    1天前
    有用
    回复
  • vG-qre
    vG-qre
    星期二 13:54

    【1. SSL/TLS握手检查】

    在服务器上使用openssl测试:

    - ✅ SSL握手成功:`CONNECTED(00000003)`

    - ✅ 验证成功:`Verification: OK`

    - ✅ 验证返回码:`Verify return code: 0 (ok)`

    - ✅ 证书链完整:包含3个证书(ISRG Root X1、R13、服务器证书)

    - ✅ TLS版本:TLSv1.3

    - ✅ 加密套件:TLS_AES_256_GCM_SHA384

    - ✅ **服务器端SSL配置完全正常**



    【2. 请求头验证检查】

    测试不同的请求头组合:

    - 测试1(只带Content-Type):失败(连接重置)

    - 测试2(带Content-Type和Referer):失败(连接重置)

    - 测试3(带完整请求头):失败(连接重置)



    **结论**:无论是否带请求头,curl测试都失败,问题不在请求头验证。



    【4. 网络层面检查】

    服务器防火墙:

    - ✅ 防火墙已启用

    - ✅ 443端口(HTTPS)已放行,允许所有IP入站

    - ✅ 80端口(HTTP)已放行,允许所有IP入站

    - ✅ 所有端口规则都是"放行"状态,没有拦截规则

    - ✅ 防火墙配置正常,应该不是导致连接重置的原因



    Nginx配置:

    - ✅ SSL证书路径:/www/server/panel/vhost/letsencrypt/api.zdvxsryedhtgvnmvbhgdrtysrydr.icu/fullchain.pem

    - ✅ TLS版本:TLSv1.2 TLSv1.3

    - ✅ Nginx配置正常



    CDN/WAF检查:

    - CDN配置:❌ 没有CDN配置

    - 系统防火墙:✅ 已开启,所有端口规则都是"放行"状态,没有拦截规则

    - PHP网站安全:✅ 已开启(监控功能),这是监控功能,不是拦截功能

    - nginx防火墙:❌ 没有安装nginx防火墙(在「安全」菜单下没有「nginx防火墙」选项)

    - WAF配置:❌ 没有WAF配置(在「安全」菜单下没有「WAF」选项)



    【5. 服务器日志确认】

    响应日志中:

    - ✅ 有微信开发者工具的请求记录(返回200)

    - ❌ 没有curl请求的记录



    【关键发现总结】

    1. ✅ 服务器端SSL配置完全正常(openssl测试成功)

    2. ✅ 微信开发者工具的请求可以正常到达服务器(返回200)

    3. ❌ 但curl和小程序的请求无法正常到达服务器(连接重置)

    4. ❌ 响应日志中没有curl请求的记录,说明请求在到达Nginx之前就被重置了

    5. ❌ 无论是否带请求头,curl测试都失败


    【问题分析】

    问题可能是客户端或网络层面的问题,希望微信技术支持能够进一步帮助排查。

    星期二 13:54
    有用
    回复
  • 一笑皆春
    一笑皆春
    12-15

    看着还是服务端的问题,再仔细检查下吧,看下接口是否通了

    12-15
    有用
    回复
  • 智能回答 智能回答 本次回答由AI生成
    12-15
    有用
    回复 2
    • 智能回答 智能回答 本次回答由AI生成
      星期二 10:38回复vG-qre
    • vG-qre
      vG-qre
      星期二 13:10
      【1. SSL/TLS握手检查】
      在服务器上使用openssl测试:
      - ✅ SSL握手成功:`CONNECTED(00000003)`
      - ✅ 验证成功:`Verification: OK`
      - ✅ 验证返回码:`Verify return code: 0 (ok)`
      - ✅ 证书链完整:包含3个证书(ISRG Root X1、R13、服务器证书)
      - ✅ TLS版本:TLSv1.3
      - ✅ 加密套件:TLS_AES_256_GCM_SHA384
      - ✅ **服务器端SSL配置完全正常**


      【2. 请求头验证检查】
      测试不同的请求头组合:
      - 测试1(只带Content-Type):失败(连接重置)
      - 测试2(带Content-Type和Referer):失败(连接重置)
      - 测试3(带完整请求头):失败(连接重置)


      **结论**:无论是否带请求头,curl测试都失败,问题不在请求头验证。


      【4. 网络层面检查】
      服务器防火墙:
      - ✅ 防火墙已启用
      - ✅ 443端口(HTTPS)已放行,允许所有IP入站
      - ✅ 80端口(HTTP)已放行,允许所有IP入站
      - ✅ 所有端口规则都是"放行"状态,没有拦截规则
      - ✅ 防火墙配置正常,应该不是导致连接重置的原因


      Nginx配置:
      - ✅ SSL证书路径:/www/server/panel/vhost/letsencrypt/api.zdvxsryedhtgvnmvbhgdrtysrydr.icu/fullchain.pem
      - ✅ TLS版本:TLSv1.2 TLSv1.3
      - ✅ Nginx配置正常


      CDN/WAF检查:
      - CDN配置:❌ 没有CDN配置
      - 系统防火墙:✅ 已开启,所有端口规则都是"放行"状态,没有拦截规则
      - PHP网站安全:✅ 已开启(监控功能),这是监控功能,不是拦截功能
      - nginx防火墙:❌ 没有安装nginx防火墙(在「安全」菜单下没有「nginx防火墙」选项)
      - WAF配置:❌ 没有WAF配置(在「安全」菜单下没有「WAF」选项)


      【5. 服务器日志确认】
      响应日志中:
      - ✅ 有微信开发者工具的请求记录(返回200)
      - ❌ 没有curl请求的记录


      【关键发现总结】
      1. ✅ 服务器端SSL配置完全正常(openssl测试成功)
      2. ✅ 微信开发者工具的请求可以正常到达服务器(返回200)
      3. ❌ 但curl和小程序的请求无法正常到达服务器(连接重置)
      4. ❌ 响应日志中没有curl请求的记录,说明请求在到达Nginx之前就被重置了
      5. ❌ 无论是否带请求头,curl测试都失败


      【问题分析】
      问题可能是客户端或网络层面的问题,希望微信技术支持能够进一步帮助排查。
      星期二 13:10
      回复
登录 后发表内容