首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

flutter应用程序中拒绝flutter_inappwebview本地https连接

在Flutter应用程序中,拒绝使用flutter_inappwebview进行本地HTTPS连接是因为flutter_inappwebview默认情况下不信任自签名的SSL证书。这是为了确保应用程序的安全性和防止潜在的安全风险。

然而,如果你确定自签名的SSL证书是可信的,并且你想要在flutter_inappwebview中使用它进行本地HTTPS连接,你可以通过以下步骤来实现:

  1. 在Flutter应用程序的根目录中,创建一个名为assets的文件夹,并将自签名的SSL证书文件(例如certificate.crt)放入其中。
  2. 在Flutter应用程序的pubspec.yaml文件中,添加以下代码来声明证书文件:
代码语言:txt
复制
flutter:
  assets:
    - assets/certificate.crt
  1. 在Flutter应用程序的代码中,使用rootBundle来加载证书文件,并创建一个SecurityContext对象来信任该证书。然后,将该SecurityContext对象传递给flutter_inappwebviewInAppWebView组件。
代码语言:txt
复制
import 'package:flutter/services.dart' show rootBundle;
import 'package:flutter_inappwebview/flutter_inappwebview.dart';

// 加载证书文件
final certificateData = await rootBundle.load('assets/certificate.crt');
final certificate = SecurityContext.defaultContext.useCertificateChainBytes(certificateData.buffer.asUint8List());

// 创建信任证书的SecurityContext对象
final securityContext = SecurityContext.defaultContext;
securityContext.setTrustedCertificatesBytes(certificate);

// 创建InAppWebView组件,并传递SecurityContext对象
final webView = InAppWebView(
  initialUrlRequest: URLRequest(
    url: Uri.parse('https://example.com'),
    headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'},
  ),
  initialOptions: InAppWebViewGroupOptions(
    crossPlatform: InAppWebViewOptions(
      useShouldOverrideUrlLoading: true,
      useOnLoadResource: true,
      useOnDownloadStart: true,
      useOnReceivedHttpAuthRequest: true,
      useOnReceivedServerTrustAuthRequest: true,
      useOnReceivedClientCertRequest: true,
      useOnReceivedHttpError: true,
      useOnReceivedSslError: true,
      useOnProgressChanged: true,
      useOnConsoleMessage: true,
      useShouldInterceptAjaxRequest: true,
      useShouldInterceptFetchRequest: true,
      useShouldInterceptRequest: true,
      useOnLoadResourceCustomSchemeHandler: true,
      useOnCreateWindow: true,
      useOnWindowFocus: true,
      useOnSafeBrowsingHit: true,
      useOnReceivedContentWorld: true,
      useOnRendererProcessGone: true,
      useOnCrash: true,
      useShouldOverrideUrlLoadingAndroid: true,
      useOnLoadResourceAndroid: true,
      useOnReceivedHttpAuthRequestAndroid: true,
      useOnReceivedServerTrustAuthRequestAndroid: true,
      useOnReceivedClientCertRequestAndroid: true,
      useOnReceivedHttpErrorAndroid: true,
      useOnReceivedSslErrorAndroid: true,
      useOnProgressChangedAndroid: true,
      useOnConsoleMessageAndroid: true,
      useShouldInterceptAjaxRequestAndroid: true,
      useShouldInterceptFetchRequestAndroid: true,
      useShouldInterceptRequestAndroid: true,
      useOnLoadResourceCustomSchemeHandlerAndroid: true,
      useOnCreateWindowAndroid: true,
      useOnSafeBrowsingHitAndroid: true,
      useOnReceivedContentWorldAndroid: true,
      useOnRendererProcessGoneAndroid: true,
      useOnCrashAndroid: true,
      useShouldOverrideUrlLoadingIOS: true,
      useOnLoadResourceIOS: true,
      useOnReceivedHttpAuthRequestIOS: true,
      useOnReceivedServerTrustAuthRequestIOS: true,
      useOnReceivedClientCertRequestIOS: true,
      useOnReceivedHttpErrorIOS: true,
      useOnReceivedSslErrorIOS: true,
      useOnProgressChangedIOS: true,
      useOnConsoleMessageIOS: true,
      useShouldInterceptAjaxRequestIOS: true,
      useShouldInterceptFetchRequestIOS: true,
      useShouldInterceptRequestIOS: true,
      useOnLoadResourceCustomSchemeHandlerIOS: true,
      useOnCreateWindowIOS: true,
      useOnSafeBrowsingHitIOS: true,
      useOnReceivedContentWorldIOS: true,
      useOnRendererProcessGoneIOS: true,
      useOnCrashIOS: true,
    ),
  ),
  onWebViewCreated: (controller) {
    // WebView创建完成后,将SecurityContext对象设置给WebView
    controller.webView.android.useHybridComposition = true;
    controller.webView.android.securityContext = securityContext;
  },
);

通过以上步骤,你可以在Flutter应用程序中使用flutter_inappwebview进行本地HTTPS连接,并信任自签名的SSL证书。请注意,这仅适用于开发环境和测试目的,对于生产环境,建议使用受信任的SSL证书。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《吐血整理》高级系列教程-吃透Fiddler抓包教程(32)-Fiddler如何抓取IOS系统Flutter应用程序的包

1.简介 上一篇讲解了安卓手机可以通过V**代理来抓取Flutter应用程序的包,iOS(iphone)同样使用上一篇V**方法(原理与android是一致的),同样需要使用到V**,在iOS也有许多与...的区域如果在国内可能无法搜索到这些软件,您需要使用美区的账号),如下图所示: 2.2配置Shadowrocket转发 1.为了完成流量重新定向,Shadowrocket与drony一样会先在设备上创建本地...APP拒绝用户手动信任的用户根证书,所以IOS证书安装IOS也比android任意的多,并没有这么多额外的操作,按正常证书安装流程操作即可。...证书安装完成后即可查看HTTPS流量。...如下图所示: 3.小结 Fiddler无法抓到包的原因:Flutter不会主动使用系统代理,需要单独设置,正是因为客户端没有使用我们设置的系统代理,他们自然也不会连接Fiddler 或 Charles

18.7K61

Flutter 获取地理位置

Flutter 获取地理位置 如今,发现用户位置是移动应用程序非常常见且功能强大的用例。如果您曾经尝试过在 Android 实现位置,您就会知道样例代码会变得多么复杂和混乱。...${address.countryName}, ${address.postal}"; } } 常见的陷阱 尽管这些软件包让我们的生活变得更轻松,而且我们不必处理在 Android 和 iOS 本地访问位置的复杂过程...位置权限对话框提示未显示始终允许的 Android 11 选项。用户必须从应用程序设置手动启用它 用户可能在 iOS 上永远拒绝定位,因此不会显示要求定位权限的本机提示。...确保处理这种边缘情况requestPermisssions() 用户可能随时从应用程序设置撤销位置权限,因此在访问位置数据之前,请确保在应用程序恢复时检查它们 结论 由于 Flutter 简化了访问位置...随着即将推出的 Android 和 iOS 操作系统版本安全性和隐私性的提高,访问位置数据而不向用户提供价值可能会导致您的应用程序被商店拒绝

3.2K10

Flutter和iOS混编详解

platform :ios, '14.0' source 'https://cdn.cocoapods.org/' use_frameworks! #use_modular_headers!...官方也给我们做出了提醒以及解释说明:     【 在iOS 14和更高版本,在你的应用程序的调试版本启用Dart组播DNS服务,以添加调试功能,如热加载和DevTools via flutter attach...注意:该服务不能在你的应用的Release版本启用,否则你可能会遇到应用商店拒绝。一种方法是维护应用程序信息的一个单独副本。每个构建配置的Plist。下面的说明假设默认的Debug和Release。...【 因为在过去的 iOS 版本,应用可以随意扫描本地网络的设备,因此应用就可以很轻松地得到本地网络里所有设备的名称和MAC地址。...就大部分应用而言,它们都不需要给本地网络权限。因为它们没有功能会使用到本地网络,请求这个权限的主要目的就是为了跟踪用户并推送广告。】

2.2K31

flutter架构(第四节)

flutter架构 从概念上看,Flutter 架构由三层构成: 框架(Dart):当您编写 Flutter 应用程序时,您直接与该层的高级 API 进行交互。...是Flutter系统的核心。引擎提供了一系列Flutter核心API的底层实现,例如图形(通过Skia),文字布局,文件等,是连接框架和系统(Andoird/iOS)的桥梁。...虽然HTML模式提供了最好的代码大小特性,但CanvasKit提供了最快的路径到浏览器的图形堆栈,并提供了一些更高的图形保真度与本地移动目标5。 网页版的架构层图如下。...这用于指定应用程序的依赖项。这些资源解释了此文件的工作原理以及如何使用它来安装软件包: ?https://dart.dev/tools/pub/pubspec ?官网 ?...入门:创建你的 Flutter 项目 特别是,请阅读最后的“轻松管理 lint 规则”部分。这解释了如何创建一组干净且可维护的规则,您可以在应用程序调整这些规则。

2.2K10

2023 年我建议创业公司选择 Flutter

Flutter 是什么来头? Flutter 是一款开源 UI 工具包,可利用单一代码库构建本地编译的移动、Web 和桌面应用程序。...Flutter 由谷歌牵头开发,允许开发者构建出具有良好表现力、灵活设计、样式美观且运行迅速的应用程序Flutter 的核心语言为 Dart,这是一种现代多范式语言,能够面向多个平台编译本地代码。...Flutter 的架构和 UI 元素具备良好的定制性和可扩展性,允许开发者轻松创建出令人眼前一亮的应用程序。 测试与工具 测试是软件开发的重要一环,Flutter 也提供开箱即用的强大测试工具。...单一代码库:Flutter 允许开发人员通过单一代码库,面向多个平台构建本地编译的应用程序。也就是说,开发者只需要编写一次代码,即可将成果广泛部署至 iOS、Android 等各类平台之上。...(https://xie.infoq.cn/article/83b9d7ecbbcf3704d7f476014) Flutter - Google 开源的移动 UI 框架 (https://xie.infoq.cn

26320

玩过Tauri和Electron,最终我选择Flutter

Flutter 有取之不尽,用之不竭的icon https://www.fluttericon.com/,也就是说,即便你没有重构和美工同学加持,写一个美观的应用也不是什么难事。...Flutter 的桌面应用程序开发仍处于实验阶段,可能存在一些稳定性和兼容性问题,但是做一个简单的桌面版本App,必须不在话下呀,可以参考我写的 flutter_chat_box ,https://github.com...bravekingzhang/tauri-chat-box图片Tauri 是一款用 Rust 编写的桌面应用程序开发框架,它结合了 Web 技术和本地应用程序的优点,可以使用常见的 Web 技术(如 HTML...、CSS 和 JavaScript)来构建应用程序,并将其封装在一个本地应用程序。...Tauri 的本地应用程序提供了更好的性能和更好的用户体验,与传统的 Web 应用程序相比,具有更快的加载速度和更好的响应能力,因为本地加载资源码,但仅仅是对比web应用而已,对比Flutter这不算什么优势

7K41

玩过Tauri和Electron,最终我选择Flutter进行跨平台应用开发

Flutter 社区插件也非常丰富 ,https://pub.dev/,基本上你能想到的所有插件他都有,就是算没有,自己懂Android和iOS开发,封装一个也非常简单,都有套路模版。...二、Tauri Tauri 是一款用 Rust 编写的桌面应用程序开发框架,它结合了 Web 技术和本地应用程序的优点,可以使用常见的 Web 技术(如 HTML、CSS 和 JavaScript)来构建应用程序...,并将其封装在一个本地应用程序。...Tauri 的本地应用程序提供了更好的性能和更好的用户体验,与传统的 Web 应用程序相比,具有更快的加载速度和更好的响应能力,因为本地加载资源码,但仅仅是对比web应用而已,对比Flutter这不算什么优势...Tauri 的本地应用程序可以借助rust与操作系统进行交互,可以访问操作系统的原生 API,如文件系统、网络和系统通知等。 Tauri 后端使用 Rust 语言,具有高效和安全的特点。

1.6K20
领券