当前位置: 首页 > 知识库问答 >
问题:

在android webview中不使用ssl如何加载https url

闾丘照
2023-03-14

我在Playstore和google send the mail上标注了一个问题,我的应用程序不安全,因为使用了SSL。

目前在我的应用程序中,我有一个webview,它是加载链接,并且包含https URL。

在web设置上,我是这样做的:

private class SSLTolerentWebViewClient extends WebViewClient {
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed(); // Ignore SSL certificate errors
    }
}

有没有人可以建议我如何做到这一点,使我的webview可以处理https url和Playstore不标记我的应用程序为不安全?

共有1个答案

辛星宇
2023-03-14

解决Google Play警告:WebViewClient.onReceivedSSLError处理程序

不总是强制handler.proceed();但是还必须包含handler.cancel();这样用户就可以避免unsaif内容的加载。

处理WebViewClient.OnReceivedSSLError处理程序的不安全实现

 webView.setWebViewClient(new SSLTolerentWebViewClient());
 webView.loadUrl(myhttps url);
 private class SSLTolerentWebViewClient extends WebViewClient {
    public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {

        AlertDialog.Builder builder = new AlertDialog.Builder(Tab1Activity.this);
        AlertDialog alertDialog = builder.create();
        String message = "SSL Certificate error.";
        switch (error.getPrimaryError()) {
            case SslError.SSL_UNTRUSTED:
                message = "The certificate authority is not trusted.";
                break;
            case SslError.SSL_EXPIRED:
                message = "The certificate has expired.";
                break;
            case SslError.SSL_IDMISMATCH:
                message = "The certificate Hostname mismatch.";
                break;
            case SslError.SSL_NOTYETVALID:
                message = "The certificate is not yet valid.";
                break;
        }

        message += " Do you want to continue anyway?";
        alertDialog.setTitle("SSL Certificate Error");
        alertDialog.setMessage(message);
        alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // Ignore SSL certificate errors
                handler.proceed();
            }
        });

        alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                handler.cancel();
            }
        });
        alertDialog.show();
    }
}
 类似资料:
  • 我正在创建一个Java程序来从服务器获取信息,但我必须从Java程序与服务器执行ssl握手。 我有文件证书用于身份验证,但我不知道如何用java加载该证书,以便java程序可以与我想要从中获取信息的服务器进行“握手”。从哪里开始?

  • 问题内容: 如何让CodeIgniter使用SSL加载特定页面?我有一个apache2 / 服务器。使用与非安全页面不同的文档根目录。例如,https(端口443)服务的页面不多,http(端口80)服务的页面不多。我如何让CodeIgniter在此设置中表现出色? 问题答案: 解决此问题的方法很少。 选项1: 我可能会将代码部署到两个文件夹中,然后在文件:/system/application/

  • 问题内容: 我使用图片插件( image:^ 2.0.4 ),以便可以在图片上写一些内容,然后将其保存为新图片到设备或通过邮件发送。我尝试使用“ new File ” 加载图像,但Flutter出现错误。我询问并搜索,并得到一个提示,我可以使用rootBundle在Flutter中加载图像。我做到了,我得到以下错误。 [错误:topaz / lib / tonic / logging / dart

  • 问题内容: 我有一个启动的matplotlib脚本… 我已经使用了命令 获取我系统上字体的列表。我发现了要使用的.ttf文件的完整路径, 我尝试使用以下命令成功使用此字体 和 两者都返回类似 我可以使用mpl.rcParams词典在绘图中设置此字体吗? 编辑 阅读更多内容后,看来这是从.ttf文件确定字体系列名称的普遍问题。在linux或python中这样做容易吗? 此外,我尝试添加 没有任何成功

  • 如何使用uri.parse从raw加载mp3?变量是一个字符串(如(如果文件是fun.mp3))。当我尝试从raw播放音频文件,但收到空对象引用错误时。我可能错过了一些非常简单的东西。多谢了。

  • 问题内容: 我正在尝试为Express.js创建一个中间件,以将所有非安全(端口80)通信重定向到安全SSL端口(443)。不幸的是,Express.js请求中没有任何信息可让您确定该请求是否来自http或https。 一种解决方案是重定向 每个 请求,但这不是我的选择。 笔记: 没有可能用Apache或其他东西来处理它。它 必须 在节点中完成。 应用程序中只能启动 一台 服务器。 您将如何解决?