dart - SSL错误阻止网站登录颤动
问题描述
干草,
作为 Xamarin 的替代品,我尝试在颤振中创建具有相同功能的应用程序。但是 webview 插件/包不适用于自签名 ssl 证书。在 Xamarin 中有一种方法可以处理 ssl 错误并且仍然可以加载网站。
当前代码:
@override
void initState() {
super.initState();
final flutterWebviewPlugin = new FlutterWebviewPlugin();
flutterWebviewPlugin.onHttpError.skip(1000);
flutterWebviewPlugin.launch("https url to website", hidden: true,
allowFileURLs: true,
appCacheEnabled: true,
withJavascript: true,
withLocalStorage: true,
withZoom: true);
flutterWebviewPlugin.onHttpError.skip(1000);
flutterWebviewPlugin.onStateChanged((state) async)
{
flutterWebviewPlugin.evalJavascript(
"document.getElementById(\"name\").innerText = \"username\"");
flutterWebviewPlugin.evalJavascript(
"document.getElementById(\"password\").innerText = \"pw\"");
flutterWebviewPlugin.evalJavascript(
"document.getElementById(\"loginbutton\").invokeMember(\"click\")");
var test = flutterWebviewPlugin.evalJavascript(
"document.getElementById(\"errorbox\").innerText");
};
flutterWebviewPlugin.dispose();
flutterWebviewPlugin.close();
错误:
Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
有没有比用 java 和 swift 编写自己的包或自定义 webview 更好的方法?
解决方案
在 Android 上,您可以修改插件。将副本克隆到本地计算机并添加一个额外的覆盖flutter_webview_plugin/android/src/main/java/com/flutter_webview_plugin/BrowserClient.java
public void onReceivedSslError (WebView view,
SslErrorHandler handler,
SslError error)
用一个简单的实现覆盖handler.proceed()
假设您的项目在其中,/projects/myproject
并且您将插件克隆到/projects/flutter_webview_plugin
. 在 中进行更改/projects/flutter_webview_plugin/android/src/.../BrowserClient.java
。然后pubspec.yaml
使用(替换现有条目flutter_webview_plugin)更新您的项目:
dependencies:
flutter_webview_plugin:
path: ../flutter_webview_plugin
推荐阅读
- sql - 在 NULLIF() 中使用逻辑运算符
- java - startapp 广告不起作用
- java - xml文件到java对象
- python - Matplotlib pandas plot_date 颜色类别
- scala - 在案例类之外创建自定义 JsObject
- java - Mapstruct:加入id
- c# - Xamarin - Prism:如何将 ContentPage 的整个 ViewModel 传递给子 ContentView
- neural-network - 关于 Keras 和批地面实况。
- kubernetes - 如何在监视模式下将 jq 过滤器应用于 kubectl 输出?
- python-3.x - 改变移动方向时水平翻转图像