在 ionic serve 上工作的 Http 请求,但在“ionic cordova run android --device”上不起作用

Posted

技术标签:

【中文标题】在 ionic serve 上工作的 Http 请求,但在“ionic cordova run android --device”上不起作用【英文标题】:Http request working on ionic serve but doesn't work on "ionic cordova run android --device" 【发布时间】:2019-10-21 01:32:57 【问题描述】:

我正在使用 Ionic 本机 http 来发出服务器请求。服务器托管在 aws 上,并且 API 已启动并正在运行(由邮递员验证)。

当我执行 ionic 服务时,请求会通过并工作,但是当我尝试在设备上运行它时它不起作用。经检查,我得到“net::ERR_CLEARTEXT_NOT_PERMITTED”,帖子作为选项发送

ERROR HttpErrorResponse headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: "http://18.220.143.133/api/login", ok: false, ...

已经尝试添加到 config.xml

login(user: User): Observable<AuthResponse> 
return this.httpClient.post('http://18.220.143.133/api/login', user, 
  headers: new HttpHeaders().set('Content-Type', 'application/json'),
).pipe(
  tap(async (res: AuthResponse) => 

    if (res.success == true) 

      await this.storage.set('user',res.user);

       await this.storage.set('ACCESS_TOKEN', res.token);
      this.authSubject.next(true);
    

  )
);

我希望移动设备也能通过 http 请求。

【问题讨论】:

HTTP request from angular will send with method OPTIONS instead of POST的可能重复 【参考方案1】:

同样的事情发生在我身上,直到我在 config.xml 文件中添加:

<preference name = "android-targetSdkVersion" value = "27" />

【讨论】:

【参考方案2】:

这与 API 调用的 CORS 有关。 This 可能会有所帮助。此外,由于您使用的是 Angular HTTP 请求,请在此处查看HTTP request from angular will send with method OPTIONS instead of POST。

【讨论】:

以上是关于在 ionic serve 上工作的 Http 请求,但在“ionic cordova run android --device”上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

通过设置Ionic-Cli代理解决ionic serve跨域调试问题

VS Code中Ionic serve命令 执行跳出的问题

设置“firebase javascript”以与“ionic serve”一起使用

如果我更改 common.d.ts ionic serve 正常运行的原因

Google Play 下载的 Ionic 应用程序 $http 不工作

Cordova / Ionic:在设备上模拟或运行时未处理 $http 请求