使用 SSL 从设备上的 Ionic 应用程序调用本地开发服务器上的 API
Posted
技术标签:
【中文标题】使用 SSL 从设备上的 Ionic 应用程序调用本地开发服务器上的 API【英文标题】:Call API on local dev server from Ionic app on device with SSL 【发布时间】:2021-10-12 17:25:03 【问题描述】:我正在开发一个带有 ASP.NET CORE Webapi 5.0 后端的 android 移动应用程序。当我使用ionic serve
在网络浏览器上运行应用程序时,我可以进行 API 调用,但是当我在设备 (ionic cordova run android --device
) 上运行它时,我不断收到ERR_CONNECTION_TIMED_OUT
。我已启用 CORS,并且 API 和设备在同一个 Wifi 网络上运行。我怀疑这个问题可能是后端在https
上运行,我需要对此进行一些调整,但我不知道那会是什么。我试图研究这个,但找不到我真正理解的任何东西。
我已经安装了cordova-plugin-whitelist
,但不知道是否需要进一步配置。
我正在使用 https://<my-computer-IP>:<port>/<apiendpoint>
进行 api 调用
更新:我更新了 IIS Express 的 URL 绑定以使用带有我计算机 IP 地址的 URL。这些电话在我的网络浏览器中工作。我还禁用了 SSL 和防火墙。但是当我尝试从我的设备进行相同的 API 调用时,我仍然收到 ERR_CONNECTION_TIMED_OUT
感谢大家的耐心等待,我对网络问题不是很精通。
离子信息:
Ionic CLI : 5.4.16 (C:\Users\sarah\AppData\Roaming\npm\node_modules\ionic)
Ionic Framework : @ionic/angular 5.6.3
@angular-devkit/build-angular : 0.1102.8
@angular-devkit/schematics : 11.2.8
@angular/cli : 11.2.8
@ionic/angular-toolkit : 3.1.1
Cordova:
Cordova CLI : 10.0.0
Cordova Platforms : android 10.1.0
Cordova Plugins : cordova-plugin-ionic-webview 5.0.0, (and 7 other plugins)
Utility:
cordova-res : 0.15.3
native-run : 1.3.0
System:
Android SDK Tools : 26.1.1
NodeJS : v14.16.1 (C:\Program Files\nodejs\node.exe)
npm : 7.8.0
OS : Windows 10
【问题讨论】:
【参考方案1】:原来防火墙是罪魁祸首,只是之前没有发现它。禁用它允许呼叫通过。这是我所做的一切:
将 IIS Express 配置为使用带有我计算机本地 IP 的 URL。您可以这样做:https://docs.microsoft.com/en-us/iis/extensions/using-iis-express/handling-url-binding-failures-in-iis-express
这篇文章对添加新证书很有帮助(需要在上一步中添加新的https
URL):ASP.NET Core + IIS Express how to setup SSL Certificate
2022 年更新:升级到 Windows 11 并升级 Chrome 后,我必须重新生成自签名证书并删除 -KeyUsage
标志才能使上一步正常工作。详情请见this post。
我禁用了防火墙和 SSL。禁用 SSL 会导致 ERR_CLEARTEXT_NOT_PERMITTED
,您可以通过以下方式处理它:https://linuxpip.org/how-to-fix-neterr_cleartext_not_permitted/
我重新启用了 SSL,它仍然有效!
【讨论】:
以上是关于使用 SSL 从设备上的 Ionic 应用程序调用本地开发服务器上的 API的主要内容,如果未能解决你的问题,请参考以下文章
当我使用 ionic 从 IOS 设备发送数据时,PHP 错误地接收到数据
使用 admob 展示广告后,无法在 iOS 设备上的 ionic 应用程序的 iframe 内播放嵌入的 youtube 视频