2017-09-16 9 views
2

저는 백엔드에서 데이터를 요청하기 위해 graphql api와 vue.js 프론트 엔드에 apollo client을 가지고 있습니다. 그것은 지금까지 잘 작동합니다.apollo-client에는 응답 헤더가 없습니다

서버가 필요한 모든 응답 헤더에서 새 JWT-Token으로 응답합니다. 따라서 해결책은 간단해야합니다 .. afterware 모든 응답에서 새 키를 가져오고 해당 저장 항목을 업데이트합니다. 그러나 .. 헤더가 비어 있습니다. 실제로 전송 된 내용을 여기

screenshot from devtools console.log

그리고있다 :

여기
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(); 
    } 
}]); 

는 응답이 모습입니다 : 여기

는 afterware입니다

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이 응답 헤더를 찾고 있다고 생각합니다 ... 나는 같은 문제를 안고 있습니다. –