首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在应用浏览器中消除Cordova中的SSL验证

在应用浏览器中消除Cordova中的SSL验证
EN

Stack Overflow用户
提问于 2016-08-10 02:17:27
回答 5查看 14.9K关注 0票数 6

我正在构建一个网络和混合移动应用程序。这些应用程序使用ssl自签名证书与第三方服务通信,以实现env的暂存。桌面浏览器允许接受带有risk警告的无效cert,但在iOS应用程序中,我得到了此错误

代码语言:javascript
运行
复制
Failed to load resource: The certificate for this server is invalid. You might be connecting to a server that is pretending to be "xxx" which could put your confidential information at risk.

我理解这种风险,但由于我的第三方提供者不能为临时服务器中的服务提供有效的ssl证书,所以我别无选择。

在iOS和android插件中是否存在允许无效ssl证书的信任/可能性。

真的很感谢你的帮助。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-03-31 04:23:03

无论是在调试模式还是在发布模式下,iOS都会抱怨证书无效。为了避免这种情况,您应该将以下代码放在AppDelegate.m文件的末尾。 @implementation NSURLRequest(DataController) +DataController*)主机{返回是;} @end 对于Cordova用户,此文件放置在 project/platforms/ios/Project/Classes/AppDelegate.m Android (Cordova专用) 在Android系统中,历史是不同的。它将允许您使用无效的证书向服务发出请求,但前提是应用程序是在构建模式下编译的。另一方面,当您以发布模式构建应用程序(即:将APK发送给同事或诸如此类的东西)时,您编写的HTML + CSS + JS运行的Cordova Web View将不允许您发出“不安全”的请求。再次,为了避免这种情况,您应该修改一个平台文件。在这种情况下,文件将是CordovaWebViewClient.java 您需要修改上述字段中的方法,如下所示: 公共onReceivedSslError(WebView视图、SslErrorHandler处理程序、SslError错误){WebView String packageName = this.cordova.getActivity().getPackageName();final PackageManager pm =packageName ApplicationInfo appInfo;尝试{ appInfo = pm.getApplicationInfo(packageName,PackageManager.GET_META_DATA);if (appInfo.flags& ApplicationInfo.FLAG_DEBUGGABLE) != 0) { // debug = true handler.proceed();返回;{ // debug = false //这是您需要更改的内容: // 1。注释此行// super.onReceivedSslError(视图、处理程序、错误);// 2。添加这两行// -> handler.proceed();返回;// <-}NameNotFoundException (NameNotFoundException e) {/怀疑时,将其锁定!Super.onReceivedSslError(视图、处理程序、错误);} 此文件放置在(Cordova v4及以下)中。 project/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java 在较新版本的Cordova (v5及更高版本)中,该文件现在放在中 project/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewClient.java

您不应该将这些解决方案用于生产应用程序。这只是为了测试它们或与同事共享它们。

参考资料:忽略用于Android和iOS的Cordova上的无效SSL证书

票数 5
EN

Stack Overflow用户

发布于 2020-06-26 20:28:53

谢谢莱维·默里。

对于电容2.2.0,您需要调整@Levi答案。

node_modules/@capacitor/android/capacitor/src/main/java/com/getcapacitor/BridgeWebViewClient.java Android

将覆盖方法与其他方法一起添加。

代码语言:javascript
运行
复制
    ....
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
      handler.proceed();
      return;
    }
票数 10
EN

Stack Overflow用户

发布于 2019-09-05 18:24:15

下面是我使用电容的方法

备注:我正在更改依赖文件,但我只是将其用于开发目的,因为我们所有的开发服务器都使用了与我们的活动域名不同的域名(我们当时还没有这个域名)。

node_modules/@capacitor/android/capacitor/src/main/java/com/getcapacitor/Bridge.java Android 查找现有的webView.setWebViewClient(new WebViewClient() {...});行。我的电话号码是207。 // webView.setWebViewClient #207行(新的WebViewClient() { // Add此重写方法@覆盖公共空onReceivedSslError(WebView视图,SslErrorHandler处理程序,>SslError错误){ handler.proceed();返回;}.} iOS - Pods/Development /电容器/CAPBridgeViewController.swift // Line #204 //将此公共类方法添加到CAPBridgeViewController public func webView(_ webView: WKWebView,didReceive挑战性: URLAuthenticationChallenge,completionHandler:@EX之外(URLSession.AuthChallengeDisposition,URLCredential?) -> Void) ( let cred =URLCredential(信任: challenge.protectionSpace.serverTrust!)completionHandler(.useCredential,cred) }

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38863228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档