首页
学习
活动
专区
工具
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证书。

相关搜索:ASP.Net网络应用程序本地主机在保存后拒绝连接在Flutter DevTools中检查应用程序状态/本地状态正在处理本地环境中的https wordpress站点,但无法连接Docker连接在本地主机窗口10中被拒绝如何使用API将Flutter应用程序连接到本地sql server数据库?连接被拒绝:访问docker容器中运行的spring boot应用程序与Android应用程序中的客户端证书的HTTPS连接应用程序中的颤动- flutter_inapp_purchase - IOS应用程序商店拒绝-性能:应用程序完整性如何在本地flutter应用程序中添加“添加到收藏夹”如何使本地存储在应用程序在Flutter中关闭后仍然存在?HttpWebRequest.GetRequestStream()连接在可执行文件中被主动拒绝,但在WPF独立应用程序中不被拒绝iPhone设备不连接到应用程序中的本地服务器无法在本地运行的Flask应用程序中连接到Google SQL如何通过Dart/Flutter中的主机名获取本地连接设备的IP地址?本地控制台应用程序中的Service bus连接不起作用**已解决**在dart、flutter应用程序中持续查看或收听互联网连接/网络连接无法连接到我的cordova iOS应用程序中的本地web服务器400错误请求使用Flutter应用程序中的Dart尝试连接到FileMaker数据库使用中的连接错误:('0.0.0.0',5000)启动gunicorn以在本地运行python应用程序Heroku逻辑应用程序中的MySQL连接默认情况下需要本地网关-为什么?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 将Flutter程序打包为ios应用并进行安装使用

    为设备(ios-release)构建com.example.myTimeApp... ════════════════════════════════════════════════════════════════════════════════ 找不到有效的代码签名证书 您可以通过在Xcode中使用您的Apple ID登录并创建iOS开发证书以及为您的项目创建一个 配置文件来连接到您的Apple开发者帐户,方法如下: 1- 使用以下命令打开Flutter项目的Xcode目标: open ios/Runner.xcworkspace 2- 在导航器中选择“Runner”项目,然后选择“Runner”目标 在项目设置中 3- 确保在Signing & Capabilities > Team下选择了“Development Team”。 您可能需要: - 首先使用您的Apple ID在Xcode中登录 - 确保您拥有一个有效的唯一Bundle ID - 使用您的Apple开发者帐户注册您的设备 - 让Xcode自动为您的应用程序配置配置文件 4- 再次构建或运行您的项目 5- 在iOS设备上信任您新创建的开发证书 通过设置 > 通用 > 设备管理 > [您的新证书] > 信任

    01
    领券