2017-09-16 32 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正在寻找响应标题......我看到了同样的问题.. –