我们目前有一个为在线订购实用程序创建的 Angular 网络应用程序。 但是我们想用它创建一个原生应用,我们想使用 Flutter。
起初我们只是想使用 webview 来显示现有的 Angular 应用程序。
问题是,我们想这样做是因为我们还想摆脱通过手机访问应用程序需要 SSL 证书的情况。
webview 还需要 SSL 证书吗?
我想这是因为它毕竟仍然像访问网页一样,但我想确定。
webview_flutter 包没有禁用 SSL 检查和忽略 SSL 错误的选项。这是一个官方的 Flutter 插件,他们不想提供与 https 建立不受信任的连接的能力。这是 github 上的相关 issue。
但是,您可以为提供此类功能的 webview 使用非官方插件。例如。 flutter_webview_plugin:
final flutterWebviewPlugin = new FlutterWebviewPlugin();
flutterWebviewPlugin.launch(
'your-url.com',
ignoreSSLErrors: true,
);
webview_flutter
插件没有任何选项可以忽略 SSL 错误。
相反,使用我的 flutter_inappwebview 插件,忽略 SSL 错误非常简单,就像您通常在 Android 上所做的那样,即使用 onReceivedServerTrustAuthRequest
事件并为指定的请求或为所有请求。
使用最新版本 5.0.5+3
和 https://badssl.com/ 的简单示例(该站点用于针对不良 SSL 配置测试客户端,请参阅 https://github.com/chromium/badssl.com)是:
ServerTrustAuthResponse(action: ServerTrustAuthResponseAction.PROCEED);
其中 child: InAppWebView(
initialUrlRequest: URLRequest(
url: Uri.parse("https://self-signed.badssl.com/")
),
onReceivedServerTrustAuthRequest: (controller, challenge) async {
print(challenge);
return ServerTrustAuthResponse(action: ServerTrustAuthResponseAction.PROCEED);
},
),
参数提供有关挑战的所有信息,例如主机、协议、领域等。
此外,在 Android 上,当您返回要执行的操作(challenge
或 PROCEED
)时,此决定由 Android 本身保存,因此下次您访问相同的 URL 时, CANCEL
事件不会被触发。
在这种情况下,您可以使用 onReceivedServerTrustAuthRequest
方法清除 Android SSL 首选项。