在离子模拟器中,所有http和https工作正常但在真实设备发布版本中它停止工作。
许多人建议为发布版本添加SSL证书,但我不知道如何添加它?
我已经尝试了所有这些来发出https请求吗?
<access origin="*"/>
<access origin="*"/>
<allow-navigation href="*"/>
<allow-intent href="*" />
还添加了白名单插件,但无效。
也尝试了这个但没有工作
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
答案 0 :(得分:0)
是的,这是所有开发人员提出的最常见的问题。最后我找到了答案,就在这里。
SSL证书足以使网站通过HTTPS进行连接,但要进入混合应用程序(如基于离子的应用程序构建的应用程序),SSL本身还不够,您需要花费几百美元的代码签名证书。
其他选择是使用您可以免费创建的自签名证书,在这里您还可以通过HTTPS连接到离子网络版本,但是再次编译后,apk文件被暂停以连接到DB服务器。
这是技巧,您可以使用自签名证书在服务中添加HTTPS端口或HTTP api链接。
完全遵循以下命令:
此后,停止编译并放松..现在您将找到一个名为platform的文件夹,路径如下所示 项目/平台/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java
按原样进行以下修改
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);
}
}
最后一次
此后,通常的命令jarsiner和zipalign
您的apk应该使用您的自签名证书在SSL的HTTPS端口中运行。