apollo-client没有响应头

时间:2017-09-16 19:13:28

标签: javascript vue.js graphql apollo apollo-client

我有一个graphql api和一个带有apollo client的vue.js前端,用于从后端请求数据。它到目前为止工作正常。

服务器在每个响应头中使用新的JWT-Token进行应答,这是我需要的。所以解决方案应该很简单..一个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

我想念一下吗?

更新

我找到了similar case in the issue tracker,已通过添加Access-Control-Expose-Headers来解决。所以我将它们添加到我的服务器配置中。现在响应看起来像这样,而apollos header对象仍然是空的:

enter image description here

1 个答案:

答案 0 :(得分:0)

您必须删除{}。

来自:

applyAfterware(res, next) {

为:

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

现在您可以获得完整的标题信息。

function change(x){
document.body.style.backgroundColor = x;
}