2014-02-07 101 views
27

我遇到了AngularJS的$ http服務有問題,它沒有返回我正在輪詢的API的所有頭文件。下面是我得到了什麼:

$http({ 
    method: 'POST', 
    withCredentials: true, 
    url: 'http://api.mydomain.com/query', 
    data: JSON.stringify(parameters) 
}) 
.success(function(data, status, headers, config){ 
    ... // setting some scope parameters based on data 
    console.log(headers()); 
}) 

我可以在Chrome網絡選項卡那一堆響應頭正由API返回告訴(我在X-分頁與總項目特別感興趣頭)。

下面是請求的網絡選項卡的截圖: Chrome's Network Panel

但上述的console.log語句(應輸出的所有頭)只返回兩個: Console Log...missing headers!

任何想法是怎麼回事?我如何實際訪問所有從AJAX調用返回的頭文件?

感謝,

-Nate

+0

哪些標題不能訪問? (另外,考慮將它們預先加入'X -') –

+0

Benjamin,我正在嘗試獲得X-Pagination-Total-Items。我想知道這是否是CORS問題,以及Access-Control-Expose-Headers是否無法使用通配符... –

回答

52

原來,訪問控制展露報頭不能接受通配符。我們需要指定客戶端應該有權訪問哪些標頭,然後才能正常工作。

+6

我花了幾個小時試圖弄清楚這一點。謝謝,謝謝你,謝謝你,謝謝 –

+0

@EliGassert,很高興它也幫助你。關於StackOverflow的偉大之處之一! :-) –

+1

哦,我的上帝..我也忘了將這些標題添加到我的CORS過濾器。難怪我可以在瀏覽器響應中看到它們,但不在AngularJS headers()調用輸出中看到它們。 – Stephane