2017-09-16 26 views
2

私は、バックエンドからデータを要求するために、graphqlのapiとvue.jsのフロントエンドにapollo clientを持っています。これまでのところうまく動作します。apollo-clientには応答のヘッダーがありません

サーバーは、必要なすべての応答ヘッダーで新しいJWTトークンで応答します。したがって、ソリューションは単純でなければなりません。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(); 
    } 
}]); 

は、応答がどのように見えるかです:

enter image description here

screenshot from devtools console.log

そして、ここでは、実際に送られたものです

私は何かが恋しいですか?私はAccess-Control-Expose-Headersを追加することで解決されているsimilar case in the issue trackerを見つけた

UPDATE

。だから、私はそれらをサーバの設定に追加した。アポロヘッダオブジェクトが空のままである一方、今の応答は、次のようになります。

enter image description here

答えて

0

あなたは削除する必要があります{}。

から:

applyAfterware({res}, next) { 

へ:

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

「res.options.headers」のリクエストで送信したカスタムヘッダーがあります。私は@ gordon-freemanが応答ヘッダーを探していたと思う...私は同じ問題を見ている.. –

関連する問題