Debug apk工作正常,排除了常见的嫌疑,但是当我构建,签名,安装发布版本时,没有https $ http API调用可以通过angular(http到同一个端点,我允许调试) ,作品)。
已安装cordova白名单
ionic plugin add cordova-plugin-whitelist
manifest.xml包含正确的指令
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Ionic config.xml包含正确的指令
<access origin="*"/>
<allow-navigation href="*" />
我的index.html声明了一个允许的Content-Security-Policy:
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
我还使用两个不同的在线SSL检查程序检查了我的中间证书链 - 它们没问题。
我完全难过了。有什么想法吗?
答案 0 :(得分:5)
重新应用SSL证书,特别注意包括中间证书。
尽管https://cryptoreport.websecurity.symantec.com/checker/和其他三个SSL检查员说我的SSL证书很好,但为了安全起见,我重置并配置了我的AWS Elastic Load Balancer SSL设置,确保我们已经包含了(说明是可选的,但不是可选的)中级证书,之后问题就消失了。
答案 1 :(得分:1)
Modify this function in SystemWebViewClient.java found in
平台\机器人\ CordovaLib \ SRC \组织\阿帕奇\科尔多瓦
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
final String packageName = this.cordova.getActivity().getPackageName();
final PackageManager pm = this.cordova.getActivity().getPackageManager();
ApplicationInfo appInfo;
try {
appInfo = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
// debug = true
handler.proceed();
return;
} else {
// debug = false
// THIS IS WHAT YOU NEED TO CHANGE:
// 1. COMMENT THIS LINE
// super.onReceivedSslError(view, handler, error);
// 2. ADD THESE TWO LINES
// ---->
handler.proceed();
return;
// <----
}
} catch (NameNotFoundException e) {
// When it doubt, lock it out!
super.onReceivedSslError(view, handler, error);
}
}
如果在第三方签名的自生成证书上发生任何SSL错误,这将忽略。 详细阅读here