使用 SSL 从设备上的 Ionic 应用调用本地开发服务器上的 API

Call API on local dev server from Ionic app on device with SSL

我正在开发具有 ASP.NET CORE Webapi 5.0 后端的 Android 移动应用程序。当我使用 ionic serve 在 Web 浏览器上 运行 应用程序时,我可以进行 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 绑定,以便将 URLs 与我的计算机的 IP 地址一起使用。这些调用在我的网络浏览器中有效。我还禁用了 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

原来防火墙是罪魁祸首,只是之前没有发现它。禁用它允许呼叫通过。这是我所做的一切:

已将 IIS Express 配置为使用 URLs 和我计算机的本地 IP。以下是如何做到这一点:https://docs.microsoft.com/en-us/iis/extensions/using-iis-express/handling-url-binding-failures-in-iis-express

此 post 有助于添加新证书(在上一步中添加的新 https URL 需要):

2022 年更新:升级到 Windows 11 并升级 Chrome 后,我不得不重新生成自签名证书并删除 -KeyUsage 上一步工作的标志。有关详细信息,请参阅 this post

我禁用了防火墙和 SSL。禁用 SSL 会导致 ERR_CLEARTEXT_NOT_PERMITTED,您可以通过以下方式处理该问题:https://linuxpip.org/how-to-fix-neterr_cleartext_not_permitted/

我重新启用了 SSL,它仍然有效!