Kam*_*mar 5 phonegap-plugins cordova phonegap-build ionic-framework cordova-plugins
在ionic模拟器中,所有http和https都可以正常工作,但是在实际设备发行版中,它会停止工作。
许多人建议为发行版本添加SSL证书,但我不知道如何添加它?
我已经尝试了所有这些以发出https请求吗?
<access origin="*"/>
<access origin="*"/>
<allow-navigation href="*"/>
<allow-intent href="*" />
Run Code Online (Sandbox Code Playgroud)
还添加了白名单插件,但不起作用。
也尝试了这个但不起作用
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
Run Code Online (Sandbox Code Playgroud)
小智 -1
是的,这是所有开发人员提出的最常见问题..最后我找到了答案,就在这里..
SSL 证书足以让网站通过 HTTPS 连接,但对于混合应用程序(例如基于 ionic 构建的应用程序),SSL 本身是不够的,您需要一个花费几百美元的代码签名证书。
另一种选择是使用您可以免费创建的自签名证书,在这里您也可以通过 HTTPS 连接到 ionic Web 版本,但在编译后,apk 文件会停止连接到数据库服务器。
这里有一个技巧,您可以使用自签名认证在服务中添加 HTTPS 端口或 HTTP api 链接。
完全按照命令操作:
之后,停止编译并放松..现在你会发现一个名为platform的文件夹,路径如下project/platforms/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);
}
}Run Code Online (Sandbox Code Playgroud)
最后
之后,常用命令 jarsiner 和 zipalign
您的 apk 应该使用您的自签名证书在 SSL 中的 HTTPS 端口中运行。
| 归档时间: |
|
| 查看次数: |
3504 次 |
| 最近记录: |