2016-09-13 101 views
1

我打電話外其餘API從我Angular2應用程序,我在響應收到此錯誤:調用外部REST API

Request header field X-XSRF-TOKEN is not allowed by Access-Control-Allow-Headers in preflight response. 

有什麼我可以做這件事的時候,我沒有控制通過服務器?

這裏是我想要做的事:

this._http.get('https://api-v3.mojepanstwo.pl/dane/wojewodztwa') 
     .map(res=>res.json()) 
     .subscribe(
      success=>{ 
       console.log(success); 
      } 
     ) 

當我試圖讓GET方法對這個endopint在郵遞員,它工作正常。在Chrome中,它會拋出上述錯誤。

這似乎只是Chrome的問題 - 它適用於Safari和Firefox。

它工作正常,當我使用jQuery獲得響應:

$.get("https://api-v3.mojepanstwo.pl/dane/wojewodztwa", function(data){ 
     console.log(data); 
    }) 
+0

你能否提供更多關於你想要做什麼的細節?你打的什麼HTTP方法,什麼瀏覽器向你展示了這個問題,你試過的所有東西,服務器上的Access-Control- *頭文件等等。 –

+0

那麼,如果服務器響應,這個令牌是不允許的,你沒有訪問服務器,那麼你真的不能做任何事情...... – rinukkusu

+0

@rinukkusu,它似乎是鉻只問題雖然 – uksz

回答

4

我的猜測是,你有某種HTTP攔截它增加了X-XSRF-TOKEN您所有(獲得?)的HTTP請求。我只是測試它,如果我不添加任何東西到我的請求頭,這個工程就像一個魅力:

getData() { 
    return this.http.get('https://api-v3.mojepanstwo.pl/dane/wojewodztwa') 
     .map(response => response = response.json()); 
} 

ngOnInit() { 
    this.appService.getData().subscribe(data => { 
     this.data = data; 
    }); 
} 

但是,如果我添加任何頭請求,我得到了同樣的錯誤,你。舉例來說,我只是說頭與名Something和值Something

headers: Headers = new Headers({ 'Something': 'Something' }); 

getData() { 
    return this.http.get('https://api-v3.mojepanstwo.pl/dane/wojewodztwa', { 
     headers: this.headers 
    }) 
     .map(response => response = response.json()); 
} 

ngOnInit() { 
    this.appService.getData().subscribe(data => { 
     this.data = data; 
    }); 
} 

這會產生錯誤給你:

請求頭字段的東西不被 允許訪問控制允許 - 預檢響應中的標題。

爲了清楚起見,我在Chrome中進行了測試。