Flutter webview 中还需要 SSL 证书吗?

问题描述 投票:0回答:3

我们目前有一个为在线订购实用程序创建的 Angular Web 应用程序。 但我们想用它创建一个本机应用程序,并且我们想使用 Flutter。

首先,我们只是想使用 Web 视图来显示现有的 Angular 应用程序。

问题是,我们想这样做是因为我们还想摆脱通过手机访问应用程序时对 SSL 证书的需要。

webview还需要SSL证书吗?

我想这是因为它仍然像访问网页一样,但我想确定一下。

flutter webview ssl-certificate android-webview
3个回答
8
投票

webview_flutter
插件没有任何忽略 SSL 错误的选项。 相反,使用我的 flutter_inappwebview 插件,可以非常简单地忽略 SSL 错误,就像您通常在 Android 上所做的那样,即使用
onReceivedServerTrustAuthRequest
 事件并针对指定请求或所有请求返回
ServerTrustAuthResponse(action: ServerTrustAuthResponseAction.PROCEED);

使用最新版本

5.0.5+3
https://badssl.com/ 的简单示例(这是一个用于针对不良 SSL 配置测试客户端的网站,请参阅 https://github.com/chromium/badssl .com)是:

child: InAppWebView(
  initialUrlRequest: URLRequest(
      url: Uri.parse("https://self-signed.badssl.com/")
  ),
  onReceivedServerTrustAuthRequest: (controller, challenge) async {
    print(challenge);
    return ServerTrustAuthResponse(action: ServerTrustAuthResponseAction.PROCEED);
  },
),

其中

challenge
 参数提供了有关挑战的所有信息,例如主机、协议、领域等。

此外,在 Android 上,当您返回要采取的操作(

PROCEED
 或
CANCEL
)时,此决定由 Android 本身保存,因此下次您访问同一 URL 时,
onReceivedServerTrustAuthRequest
 事件将获胜。不会被触发。 在这种情况下,您可以使用
controller.android.clearSslPreferences()
方法清除 Android SSL 首选项。


1
投票

webview_flutter 包没有禁用 SSL 检查和忽略 SSL 错误的选项。这是一个官方的 Flutter 插件,他们不想提供与 https 建立不可信连接的能力。这是 github 上的相关issue

但是,您可以使用提供此类功能的非官方 webview 插件。例如。 flutter_webview_plugin

final flutterWebviewPlugin = new FlutterWebviewPlugin();

flutterWebviewPlugin.launch(
    'your-url.com',
    ignoreSSLErrors: true,
);

0
投票

默认情况下,在 webview_flutter 中没有绕过/忽略/继续没有 SSL 的选项,并且 flutter_webview_plugin 几乎已被弃用,并且在过去 2 年里没有更新,直到这个答案。 但webview_flutter中有一个解决方案。

建议仅在应用程序中使用 HTTPS 调用。 iOS 9.0 中引入了传输安全性,默认情况下仅允许来自应用程序的 HTTPS 调用。

但是,如果您仍然想允许所有非 https 调用,请在 Info.plist 中添加 NSAppTransportSecurity(字典),并添加一个名为 NSAllowsArbitraryLoads 且布尔值为 YES 的子项。更新后,plist 应该是这样的

方法1:在info.plist文件的源代码中我们可以添加:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

方法2:或者你可以在Xcode中进行

  1. 打开我的项目目标的 info.plist 文件
  2. 添加了一个名为 NSAppTransportSecurity 的键作为字典。
  3. 添加了一个名为 NSAllowsArbitraryLoads 的子项作为 Boolean 并设置其 值设置为 YES,如下图所示。

© www.soinside.com 2019 - 2024. All rights reserved.