4

私はあまりにも長い間 fetch-client に頭を悩ませてきました。助けが必要です。

スカイスキャナーからデータを取得しています。リクエストは API にヒットし、Chrome の開発ツールはそれをコード 200 と正しいレスポンス本文を含む完全なフェッチ リクエストとしてネットワーク タブにリストします。

import {inject} from 'aurelia-framework';
import {HttpClient} from 'aurelia-fetch-client';
@inject(HttpClient)
export class Flights {
    constructor(http){
        http.configure(config => {
          config
            .withBaseUrl('http://partners.api.skyscanner.net/apiservices/')
            .withDefaults({
                mode: 'no-cors',
                headers: {
                    'Accept': 'application/json',
                    'Content-type' : 'application/json'
                }
            });
        });

        this.data = "";
        this.http = http;
    }
  activate() {
    this.http.fetch('browsequotes/v1.0/GB/GBP/en-GB/UK/anywhere/anytime/anytime?apiKey=MYAPIKEYGOESHERE')
            .then(response => {
                console.log(response);
                console.log(response.response);
                console.log(response.content);
                console.log(response.data);
            })
            .catch(ex => {
                console.log(ex);
            }); 
  }
}

しかし、応答オブジェクトが出力されると、何も含まれていません:

Response {}
  body: null
  bodyUsed: false
  headers: Headers
  __proto__: Headers
  ok: false
  status: 0
  statusText: ""
  type: "opaque"
  url: ""
  __proto__: Response

残りのすべての console.log はundefinedを生成します

fetch-client を間違って使用していませんか? 私は何が欠けていますか?

4

2 に答える 2

3

不透明な応答( type: "opaque")を受け取っていることに注意してください。不透明な応答では、それらを読み取ることができません。これは、no-cors以前に設定したモードによるものです。このモードを使用する必要がcorsあり、SkyScanner は API キーに適切なヘッダーを提供する必要があります

于 2016-02-08T10:38:54.157 に答える