当前位置:实例文章 » JAVA Web实例» [文章]flutter android Webview 打开网页错误ERR_CLEARTEXT_NOT_PERMITTED 、 net:ERR_CACHE_MISS

flutter android Webview 打开网页错误ERR_CLEARTEXT_NOT_PERMITTED 、 net:ERR_CACHE_MISS

发布人:shili8 发布时间:2025-03-07 08:58 阅读次数:0

**Flutter Android WebView 打开网页错误 ERR_CLEARTEXT_NOT_PERMITTED、net:ERR_CACHE_MISS**

在 Flutter 中使用 Android WebView 来打开网页时,可能会遇到一些问题。其中两个常见的错误是 ERR_CLEARTEXT_NOT_PERMITTED 和 net:ERR_CACHE_MISS。这两种错误通常与 Android 的安全策略有关。

**1. ERR_CLEARTEXT_NOT_PERMITTED**

这个错误通常出现在 Android8.0(Oreo)以上版本中。当 WebView 尝试加载一个需要通过 HTTP 协议访问的网页时,会出现这个错误。原因是 Android 从 Oreo 开始,强制要求所有应用使用 HTTPS 协议来访问网络资源。

**解决方案:**

1. **使用 HTTPS 协议**: 确保你的网页使用 HTTPS 协议。如果你无法更改网页的协议,可以尝试使用一个代理服务器来转发 HTTP 请求到 HTTPS。
2. **添加清除文本权限**: 在 AndroidManifest.xml 文件中,添加以下代码:

xml<application ...
 android:usesCleartextTraffic="true">

**注意:**

* 这个解决方案仅适用于 Android8.0(Oreo)以上版本。
* 使用清除文本权限可能会导致安全风险,因为它允许 WebView 访问未经加密的网络资源。

**2. net:ERR_CACHE_MISS**

这个错误通常出现在 WebView 中,当尝试缓存一个网页时,出现了问题。原因可能是由于 WebView 的缓存机制不正确或网页本身的问题。

**解决方案:**

1. **检查 WebView 缓存设置**: 确保 WebView 缓存设置正确。如果你使用的是 Flutter WebView,尝试在 AndroidManifest.xml 文件中添加以下代码:
xml<application ...
 android:hardwareAccelerated="true">

2. **清除缓存**: 尝试清除 WebView 的缓存。可以通过以下代码来实现:
dartimport 'package:flutter/material.dart';
import 'package:flutter_webview/flutter_webview.dart';

void main() {
 runApp(MyApp());
}

class MyApp extends StatelessWidget {
 @override Widget build(BuildContext context) {
 return MaterialApp(
 home: Scaffold(
 appBar: AppBar(
 title: Text('WebView Demo'),
 ),
 body: Center(
 child: ElevatedButton(
 onPressed: () async {
 await FlutterWebview.loadUrl(
 ' /> cacheMode: CacheMode.LOAD_CACHE,
 );
 },
 child: Text('Load URL'),
 ),
 ),
 ),
 );
 }
}

**注意:**

* 这个解决方案仅适用于 WebView 缓存问题。
* 使用清除缓存可能会导致性能问题,因为它需要重新加载网页。

总之,ERR_CLEARTEXT_NOT_PERMITTED 和 net:ERR_CACHE_MISS 是两个常见的错误,在 Flutter Android WebView 中使用时。通过检查安全策略、添加清除文本权限和检查 WebView 缓存设置,可以解决这些问题。

相关标签:flutterwebviewandroid
其他信息

其他资源

Top