在axios和Vue中使用cookie

时间:2019-01-18 03:08:33

标签: node.js express vue.js axios session-cookies

我创建了一个Node.js快递服务器,该服务器使用“ jsforce”提供的SOAP接口连接到Salesforce.com。它使用会话cookie来通过“ express-session”包进行授权。到目前为止,它具有用于登录的POST方法和用于执行简单查询的GET。与Postman进行的测试证明该服务器可以正常工作。

作为该服务器的浏览器界面,我编写了一个使用axios执行GET和POST的Vue应用程序。我需要保存在登录POST期间创建的会话cookie,然后将cookie附加到后续的CRUD操作。

我尝试了各种方法来处理cookie。我尝试过的一种方法是在POST上使用axios响应拦截器

axios.interceptors.response.use(response => {
  update.update_from_cookies();
  return response;
});

函数'update_from_cookies'尝试获取名为'js-force'的cookie,但是尽管我知道它已被发送,但找不到它

import Cookie from 'js-cookie';
import store from './store';

export function update_from_cookies() {
  let logged_in = Cookie.get('js-force');
  console.log('cookie ' + logged_in);
  if (logged_in && JSON.parse(logged_in)) {
    store.commit('logged_in', true);
  } else {
    store.commit('logged_in', false);
  }
}

我还看到了将参数添加到axios调用的各种建议,但是这些建议也不起作用。

对于使用axios或与Vue兼容的类似程序包处理cookie的一些建议,我将不胜感激

谢谢

1 个答案:

答案 0 :(得分:0)

问题已解决。我对axios调用使用了错误的语法

正确的语法将{withCredentials:true}作为最后一个参数

  this.axios.post(uri, this.sfdata, {withCredentials: true})
    .then( () =>   {
      this.$router.push( {name : 'home' });
    })
    .catch( () => {
    });