Ionic 4 Http 失败响应(未知 url):0 未知错误。在真机上调用api时

lad*_*ady 6 post http ionic-framework

我有一个 ionic 4 应用程序,它调用 .NET Core 后端 api。它在 chrome 浏览器上正常工作,但是当我在 android 设备上运行 apk 时,响应是:

{"headers":{"normalizedNames":{},"lazyUpdate":null,"headers":{}},"status":0,"statusText":"Unknown Error","url":null,"ok":false,"name":"HttpErrorResponse","message":"Http failure response for (unknown url): 0 Unknown Error","error":{"isTrusted":true}}
Run Code Online (Sandbox Code Playgroud)

关于标题我附加了这些选项:

const httpOptions = {
    headers: new HttpHeaders({
        "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" , 
        "Access-Control-Allow-Origin": "*", 
        "Access-Control-Allow-Headers": "Origin, Content-Type, X-Auth-Token, Accept, Authorization, X-Request-With",
        "Access-Control-Allow-Credentials" : "true",
        "Access-Control-Allow-Methods" : "GET, POST, DELETE, PUT, OPTIONS, TRACE, PATCH, CONNECT"  
       }) 
};  
Run Code Online (Sandbox Code Playgroud)

我已经安装了插件:cordova-plugin-ionic-webview

并使用来自“@angular/common/http”的 HttpClient

我的 API 远程托管,没有使用 ssl 证书!

我用谷歌搜索了所有解决方案,但没有一个能解决我的问题

小智 16

我遇到了同样的问题,以下是我的条件:

  • 我的 Ionic 4 应用程序在 Chrome 上运行良好,但是当我在模拟器上运行它时,它给了我“未知错误”问题。
  • 我的后端是 Laravel 6。
  • 我在 Mac 上使用 Android Studio 和 Visual Studio 代码。
  • 我试图在服务器上调用 API。

我尝试了很多方法来解决这个问题。我确信这不是 COR 问题,因为我已经解决了它。

那么你怎么能解决这样的问题。你只需要添加一行,即

android:usesCleartextTraffic="true"
Run Code Online (Sandbox Code Playgroud)

在这个标签中:

android:usesCleartextTraffic="true"
Run Code Online (Sandbox Code Playgroud)

在您的清单文件中,即

[yourProject]/android/app/src/main/AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)

你很高兴去。


lad*_*ady 3

经过两天的努力,终于解决了问题!我使用以下标头将 API 调用从“@angular/common/http”迁移到本机 http“@ionic-native/http/ngx”:

        // create headers data
        const headers = {
          "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", 
          'Accept': 'application/json, text/plain',
          "cache-control": "no-cache", 
          "Access-Control-Allow-Origin": "*", 
          "Access-Control-Allow-Headers": "Origin, Content-Type, X-Auth-Token, Accept, Authorization, X-Request-With, Access-Control-Request-Method, Access-Control-Request-Headers",
          "Access-Control-Allow-Credentials" : "true",
          "Access-Control-Allow-Methods" : "GET, POST, DELETE, PUT, OPTIONS, TRACE, PATCH, CONNECT",  
          };
Run Code Online (Sandbox Code Playgroud)

对我来说,缺点是,现在我必须在真实设备上进行测试。