使用 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,它仍然有效!
我正在开发具有 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>
更新:我更新了 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,它仍然有效!