Android 离子http失败(响应0)

Android 离子http失败(响应0),android,node.js,angular,api,ionic-framework,Android,Node.js,Angular,Api,Ionic Framework,我们正在构建一个需要API请求的应用程序。 在前端,我们使用带角度的离子。当我们试图发送一个请求到后端时,我们得到了这个错误 当我们在浏览器的桌面上进行尝试时,它会起作用。 { "headers":{ "normalizedNames":{ }, "lazyUpdate":null, "headers":{ } }, "status":0, "statusText":"Unknow

我们正在构建一个需要API请求的应用程序。 在前端,我们使用带角度的离子。当我们试图发送一个请求到后端时,我们得到了这个错误

当我们在浏览器的桌面上进行尝试时,它会起作用。

{
    "headers":{
        "normalizedNames":{

        },
        "lazyUpdate":null,
        "headers":{

        }
    },
    "status":0,
    "statusText":"Unknown Error",
    "url":"http://server_ip:3000/path/useCode/1234",
    "ok":false,
    "name":"HttpErrorResponse",
    "message":"Http failure response for http://server_ip:3000/path/useCode/1234: 0 Unknown Error",
    "error":{
        "isTrusted":true
    }
}
这就是我们发送请求的方式

import { HttpClient, HttpHeaders } from '@angular/common/http';

public sendCodeGET() {
    this.httpClient.get(`http://server_ip:3000/path/useCode/${this.code.trim()}`).subscribe(
      res => {
        this.response = JSON.stringify(res);
      },
      err => {
        this.response = JSON.stringify(err);
        this.presentToast(err.error['message']);
      }
    );
  }
我们正在使用nodejsv10.15.3,其中我们设置了如下所示的CORS头

app.use((req, res, next) => {
    res.setHeader("Access-Control-Allow-Origin", "*");
    res.setHeader("Access-Control-Allow-Headers","Origin, X-Requested-With, Content-Type, Accept, Authorization");
    res.setHeader("Access-Control-Allow-Methods","GET, POST, OPTIONS, DELETE");
    res.setHeader("Access-Control-Expose-Headers","Content-Length,Content-Range");

    if (req.method === 'OPTIONS') {
        res.setHeader('Access-Control-Allow-Methods', 'PUT, POST, PATCH, DELETE, GET');
        return res.status(200).json({});
    }
    next();
});
config.cml

<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="*" />

-发布和获取请求

我建议尝试一些事情

  • 下载一个CORS插件,该插件允许您绕过阻止的标题
  • 如果你使用的是爱奥尼亚,我假设这是一款混合应用。利用离子HTTP。您可以获得更好的结果。
  • 查看爱奥尼亚的官方文档以获得帮助

  • 我面临同样的问题,但我将其分类如下。遵循以下步骤

  • 打开
    [yourProject]/android/app/src/main/AndroidManifest.xml
  • 2.在那里添加此行
    android:usesCleartextTraffic=“true”

    3.将此行添加到
    config.xml
    文件

    <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
                <application android:usesCleartextTraffic="true" />
    </edit-config>
    

    在AndroidManifest.xml中检查您的权限<代码>
    <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
                <application android:usesCleartextTraffic="true" />
    </edit-config>