You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter WebView在Android 6.0设备上出现net::ERR_SPDY_PROTOCOL_ERROR求助

解决Flutter WebView在Android 6.0上出现net::ERR_SPDY_PROTOCOL_ERROR的问题

问题根源

Android 6.0(API 23)自带的系统WebView基于旧版Chromium内核,对SPDY协议的兼容性较差。而现代服务器通常默认启用SPDY/HTTP2协议,导致旧WebView无法完成协议握手,最终触发加载失败。

可行解决方案

1. 强制WebView使用HTTP/1.1

通过配置WebView参数,禁用HTTP2和SPDY支持,强制回退到HTTP/1.1:

WebViewWidget(
  controller: WebViewController()
    ..setJavaScriptMode(JavaScriptMode.unrestricted)
    ..loadRequest(Uri.parse('https://testsite.com'))
    ..setOnWebViewCreated((controller) async {
      if (Platform.isAndroid) {
        final AndroidWebViewController androidController =
            controller.platform as AndroidWebViewController;
        final AndroidWebSettings settings = await androidController.getSettings();
        // 禁用HTTP2和SPDY,强制使用HTTP/1.1
        settings.setHttp2Enabled(false);
        settings.setSpdyEnabled(false);
      }
    }),
)

2. 调整服务器SSL/TLS配置

Android 6.0默认对高版本TLS(1.2+)及部分加密套件支持不足,可要求服务器添加兼容配置:

  • 启用TLS 1.0、TLS 1.1协议支持
  • 加入Android 6.0兼容的加密套件(如TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA)

3. 引导用户更新系统WebView

Android 6.0的WebView可通过Google Play独立更新,提示用户前往应用商店搜索「Android System WebView」并更新至最新版本,新版内核会修复旧协议兼容问题。

4. 替换为第三方WebView库

若上述方法无效,可使用自带独立Chromium内核的第三方插件(如flutter_inappwebview),摆脱系统WebView版本限制:

InAppWebView(
  initialUrlRequest: URLRequest(url: Uri.parse('https://testsite.com')),
)

内容的提问来源于stack exchange,提问作者Abdul Ahath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:45:31