美文网首页
webview_flutter支持http访问&忽略SSL错误

webview_flutter支持http访问&忽略SSL错误

作者: 晓函 | 来源:发表于2020-04-18 23:29 被阅读0次

    解决两个问题:
    1、webview访问http页面
    2、webview忽略一些异常的ssl

    如果我们的 URL 是 HTTP 而不是 HTTPS 的话,那么就只可以在 Android 9.0 以下的设备运行(iOS同样不可以)。

    如果运行在 iOS 上会出现白屏,如果运行在 Android 9.0+ 的设备上就会出现 net::ERRCLEARTEXTNOT_PERMITTED 的错误。

    其实原因很简单,因为无论是 iOS 还是 Android 9.0+ 都对非 HTTPS 的请求做了一些限制,并且对https安全性做了严格要求,比如一些私有ssl证书,或者廉价的证书,就可以出现认证失败(比如打开ssl页面空白,debug日志提示错误handshake failed; returned -1, SSL error code 1)

    下面给出我的解决方案。

    iOS

    我们需要在 IOS 模块的 Runner 中的 info.plist 文件中添加如下字段:

    <key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict>
    
    image.png

    然后执行 flutter clean 后重新运行即可访问 HTTP 网页了。

    Android

    1、清单文件AndroidManifest.xml的application标签里面设置networkSecurityConfig

    <?xml version="1.0" encoding="utf-8"?>
    <manifest ... >
        <application android:networkSecurityConfig="@xml/network_security_config">
             <!-- ... -->
             <!-- ... -->
        </application>
    </manifest>
    
    
    

    2、在资源文件夹res/xml下面创建network_security_config.xml,内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true">
            <trust-anchors>
                <certificates src="system" />
            </trust-anchors>
        </base-config>
    </network-security-config>
    
    
    
    image.png

    然后执行 flutter clean 后重新运行即可访问 HTTP 网页了。

    相关文章

      网友评论

          本文标题:webview_flutter支持http访问&忽略SSL错误

          本文链接:https://www.haomeiwen.com/subject/mjctbhtx.html