Aurelia:fetch-client响应没有我的数据

时间:2016-02-08 07:50:05

标签: aurelia fetch-api

我一直在用fetch-client敲打太长时间,我需要一些帮助。

我从Skyscanner获取了一些数据。该请求会触及其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?我错过了什么?

2 个答案:

答案 0 :(得分:3)

请注意,您已收到opaque responsetype: "opaque")。不透明的回复不允许您阅读它们。这是由于您之前设置的no-cors模式。您应该使用cors模式,SkyScanner应该为您的API密钥提供正确的标头,我认为they don't do

答案 1 :(得分:0)

我修正了可能属于同一标题的问题,所以在这里留下答案,因为我无法在网上找到任何内容。可能我只是愚蠢但我之前就是这样做......

.then(response => {response.json()})
.then(data => console.log(data))

在一天的时间里把我的头撞了一下,结果证明:

.then(response => response.json())
.then(data => console.log(data))

或者

.then(response => { return response.json()})
.then(data => console.log(data))

简单,与Aurelia或Fetch无关,但对Javascript语法有所了解。