2017-09-16 40 views
2

我有一個graphql api和一個vue.js前端,用於從後端請求數據的apollo client。到目前爲止它工作正常。apollo-client無迴應

服務器在每個響應頭中都有一個新的JWT-Token,這是我需要的。所以解決方案應該很簡單..一個afterware從每個響應獲取新密鑰並更新相應的存儲條目。 但是 ..標頭是空的。

這裏是afterware:

apolloClient.networkInterface.useAfter([{ 
    applyAfterware({ response }, next) { 
     if (process.env.NODE_ENV === 'development') { 
      console.log('got new response', response); 
     } 
     if (response.status === 401) { 
      store.commit('logout'); 
      store.commit('routeLogin'); 
     } 
     next(); 
    } 
}]); 

下面是響應的樣子:

screenshot from devtools console.log

,這裏是事實上已發送的內容:

enter image description here

我錯過了什麼嗎?

UPDATE

我發現它已經解決了通過添加Access-Control-Expose-Headers一個similar case in the issue tracker。所以我將它們添加到我的服務器配置中。現在的反應是這樣的,亞波羅標題對象仍然是空的:

enter image description here

回答

0

您必須刪除{}。

來自:

applyAfterware({res}, next) { 

到:

applyAfterware(res, next) { 

,現在你得到充分的headerinformation。

apolloClient.networkInterface.useAfter([{ 
applyAfterware(res, next) { 
     console.log("response:", res.options.headers); 
     if (res.response.status === 401) { 
      store.commit('logout'); 
      store.commit('routeLogin'); 
      // logout(); 
     } 
     next(); 
    } 
}]); 
+0

我看到我在'res.options.headers'中的請求顯示中發送的自定義標頭。我認爲@ gordon-freeman正在尋找響應標題......我看到了同樣的問題.. –