由于设备Ionic上的访问控制检查,XMLHttpRequest无法加载XXXX

Sim*_*mon 5 xmlhttprequest http-headers ionic-framework angular

我知道这似乎是一个重复的问题,但是我在这里搜索了几个小时,却没有解决任何可行的解决方案:这是我的问题,当我使用我的应用程序时,有时请求无法正常工作,而在我的应用程序上运行该请求的频率更高iOS设备(iPhone 5s)比Android设备(One + 5T)更多。当我尝试请求api时 ,出现以下错误。 并且:

[Error] Erreur de récupération des gameCredits – e {headers: t, status: 0, statusText: “Unknown Error”, …}
e {headers: t, status: 0, statusText: “Unknown Error”, url: null, ok: false, …}e
   (fonction anonyme) (cordova.js:1731)
   (fonction anonyme) (main.js:1:97464)
   onInvoke (vendor.js:1:27201)
   run (polyfills.js:3:10150)
   (fonction anonyme) (polyfills.js:3:20246)
   onInvokeTask (vendor.js:1:27117)
   runTask (polyfills.js:3:10845)
   o (polyfills.js:3:7902)
   invokeTask (polyfills.js:3:16825)
   p (polyfills.js:2:27655)
   v (polyfills.js:2:27895)
HttpErrorResponse","message":"Http failure response for (unknown url): 0 Unknown`
Run Code Online (Sandbox Code Playgroud)

我尝试了在以下讨论中找到的答案:-IONIC 3 CORS问题(设置代理)-Ionic 3中的CORS错误(降级为UIWebview)-向config.xml中的所有内容添加一个-在身份验证服务中添加了标头为了确保它们存在-我添加了标头以将其发送回API。

你们对我如何解决这个问题有任何想法吗?

这是我的代码的一些示例:这是我如何请求api的邮政示例

    post(url: string, body?: any) {
    return this.checkToken().then(isTokenValide => {

        if (isTokenValide) {
            return this.getToken().then(
                token => {
                    this.headers = this.headers.set('Authorization', 'Bearer ' + token);
                    return this.http.post(this.domain + url, body, { headers: this.headers }).toPromise()
                        .then(response => {
                            let httpResponse = new HttpResponse(response);
                            if (this._checkStatus(httpResponse))
                                return Promise.resolve(response);
                        }).catch(error => {
                            return Promise.reject(error);
                        });
                },
                error => {
                    return Promise.reject(error);
                });             } else {

            if (url == 'auth/login' || url == 'auth/register') {
                const headersLogin = new HttpHeaders({'Accept':'application/json','Content-Type':'application/json'});
                let loginUrl =this.domain +url;

                return this.http.post(loginUrl, body, { headers: headersLogin }).toPromise()
                    .then(response => {

                        let httpResponse = new HttpResponse(response);

                        if (this._checkStatus(httpResponse))
                            return Promise.resolve(response);
                    }).catch(error => {

                        return Promise.reject(error);
                    });
            } else {

                return Promise.reject('token invalide');
            }
        }
    }).catch(error => {

        return Promise.reject(error);
    });
}
Run Code Online (Sandbox Code Playgroud)

我的离子信息是:

cli软件包:(/ usr / local / lib / node_modules)

@ionic/cli-utils  : 1.19.2
ionic (Ionic CLI) : 3.20.0
Run Code Online (Sandbox Code Playgroud)

全局软件包:

cordova (Cordova CLI) : 8.0.0
Run Code Online (Sandbox Code Playgroud)

本地套餐:

@ionic/app-scripts : 3.1.6
Cordova Platforms  : browser 5.0.3
Ionic Framework    : ionic-angular 3.9.2
Run Code Online (Sandbox Code Playgroud)

系统:

Node : v8.10.0
npm  : 6.1.0
OS   : Linux 4.4
Run Code Online (Sandbox Code Playgroud)

环境变量:

ANDROID_HOME : not set
Run Code Online (Sandbox Code Playgroud)

其他:

backend : pro`
Run Code Online (Sandbox Code Playgroud)