electron使用axios保存登录会话,设置cookie

记录一下刨坑的路程。。。。。

首先找遍全网全都是说设置

withCredentials:true

然并卵,登录后其他API调用一直报未登录,chrome模拟的话没问题。

观察response内容,

electron使用axios保存登录会话,设置cookie_第1张图片

发现回传有cookie,遂登陆成功后设置cookie

axiosApi.defaults.headers.Cookie = response.headers['set-cookie'];

结果尝试后仍然报未登录,遂再次爬资料。。。。。

最后仔细阅读axios在git中的readme

发现有request和response的拦截回调,注册request并打印request中的config内容

axiosApi.interceptors.request.use(function(config){
  console.warn("request config:",config);
  return config;
},function(error){
  return Promise.reject(error);
});

发现打印内容中的headers中完全没有cookie字段。。。。。。

于是对登陆后的cookie进行保存,并每次post前设置cookie

axiosApi.post("/Login",qs.stringify(data),{timeout:10000,withCredentials:true})
  .then(response=>{
    axiosApiCookie = response.headers['set-cookie'];
    console.warn(axiosApiCookie);
    console.warn(response);
    successHandler(response,success,failure);
  })
  .catch(error=>{
    failureHandler(error,failure);
  })
axiosApi.defaults.headers.Cookie = axiosApiCookie;
axiosApi.post("/Log",qs.stringify(data),{timeout:5000,withCredentials:true})

然并卵,还是没有用,直接在拦截回调中添加呢?

axiosApi.interceptors.request.use(function(config){
  console.warn("request config:",config);
  config.headers.Cookie = axiosApiCookie;
  return config;
},function(error){
  return Promise.reject(error);
});

终于成功了,简直了,什么也不想说

你可能感兴趣的:(electron)