来自 Capacitor App 的 iOS 模拟器上的网络错误

Network Error on iOS emulator from Capacitor App

我正在使用 Angular Capacitor v3 和 axios。向任何外部服务器发出任何请求时收到网络错误。这只会在使用 XCode 进行仿真时发生。请求永远不会到达服务器,只是 returns 状态为 0。

我无法在本地 Windows、已发布的网站、Android Studio 模拟器或 android 设备上重复此问题。

不确定我是否缺少权限或配置,但我尝试添加“本地网络使用”、“位置始终和使用时”权限,并尝试将 NSAppTransportSecurity 设置添加到 Info.plist。

我不认为这是服务器的问题,因为它似乎从未到达过它。但我有一个经过验证的 HTTPS 证书,由 Azure 托管,具有有效的 CORS 规则。

我也尝试过使用 Angular 的 HttpClient,结果相同。

错误立即发生并且没有给出具体信息,但消息如下:

{"headers":{"normalizedNames":{},"lazyUpdate":null,"headers":{}},"status":0,"statusText":"Unknown Error","url":"https://jsonplaceholder.typicode.com/users/1","ok":false,"name":"HttpErrorResponse","message":"Http failure response for https://jsonplaceholder.typicode.com/users/1: 0 Unknown Error","error":{"isTrusted":true}}

我正面临同样的问题 它在不同的域上工作,没有主机名不同,它停止工作。 所以它甚至不向服务器发出请求。 同样的配置也适用于 android。只是不 IOS

经过广泛研究并从头开始重建后,我发现这是一个与 CORS 相关的问题,但特定于使用我的托管服务器 Azure 进行设置。令人困惑的部分是,即使是外部示例调用,例如“http://jsonplaceholder.typicode.com/users/1”仍然给出相同的错误,据我所知,这不会有 CORS 问题。如果有人知道为什么会这样,请告诉我。

这与ios中无法使用http/https方案有关,而是使用capacitor。 Azure App Service CORS 设置中不允许使用此方案,除非您允许全部,但我不能,因为我需要启用 Access-Control-Allow-Credentials。因此,我必须使用我的 C# 应用程序服务代码中允许的 capacitor 方案构建 CORS 配置。从 Azure 应用服务中的 CORS 中删除所有设置,然后允许应用我的 C# 代码中的设置。