使用 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 4 CORS 问题

当我使用 ionic 从 IOS 设备发送数据时,PHP 错误地接收到数据

本地主机和设备上的 Ionic 的 CORS 问题[关闭]

使用 admob 展示广告后,无法在 iOS 设备上的 ionic 应用程序的 iframe 内播放嵌入的 youtube 视频

从后台安排本地通知(Ionic + ngCordova)

javax.net.ssl.SSLException:连接由 4.4.2 设备上的对等方关闭(适用于 6.0.1)