HttpClient Angular在iOS设备上不起作用

时间:2019-08-07 11:02:19

标签: angular ionic-framework httpclient mobile-application

我想从一个角度将项目中的数据从网站获取到移动应用程序中。

我发现HttpClient插件可以很好地在浏览器和Android设备中使用,但不适用于iOS设备。

代码如下:

data.service.ts文件:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})

export class DataService {

  constructor(private httpClient: HttpClient) {
    //
  }

  getDescription() {
    return this.httpClient.get('https://mywebsite.com');
  }
}

page.ts我获取数据的地方:

import { Component, OnInit } from '@angular/core';
import { DataService } from '../service/data.service';

@Component({
  selector: 'app-batik-motifs',
  templateUrl: './batik-motifs.page.html',
  styleUrls: ['./batik-motifs.page.scss'],
})

export class BatikMotifsPage implements OnInit {

  description$: Object;

  constructor(private dataService: DataService) {
    //
  }

  ngOnInit() {
    this.dataService.getDescription().subscribe(descriptions => this.description$ = descriptions);
  }

}

page.html,我在其中显示数据:

<ion-list>

    <ion-item *ngFor="let descriptions of description$" lines="none">
      <ion-card>
        <ion-card-header>
          <ion-card-subtitle [innerHTML]="descriptions.title.rendered"></ion-card-subtitle>
        </ion-card-header>
        <ion-card-content>
          <ion-row>
            <ion-col size="4">
              <img [src]="descriptions.image.guid" />
            </ion-col>
            <ion-col size="8">
              <p [innerHTML]="descriptions.content.rendered"></p>
            </ion-col>
          </ion-row>
        </ion-card-content>
        <ion-row class="cardfooter">
          <ion-col>
            <ion-button>Read More</ion-button>
          </ion-col>
        </ion-row>
      </ion-card>
    </ion-item>

  </ion-list>

我已经尝试在config.xml上添加一些属性,

<access origin="*" />
<allow-navigation href="*" />
<allow-navigation href="http://localhost:8080/*" />
<allow-navigation href="https://mywebsite.com/*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />

然后在index.html

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">

问题是,在浏览器和Android设备中我可以看到数据,但是在iOS设备中我什么都看不到(即使HTTP请求正常,因为我没有错误)。

1 个答案:

答案 0 :(得分:0)

确保您的API部署在角度应用程序的同一域中,甚至不部署在子域中。

我面临同样的问题,经过大量搜索,这是为我工作的唯一方法

我认为这与这个问题有关。

Angular GET request error, but only on safari iOS