使用$ .ajax({})时不会保存Express Session;

时间:2015-01-15 00:47:04

标签: javascript jquery node.js express

正如它所说的那样。我正在尝试将一些数据保存为Express会话,而Express似乎将每个AJAX请求视为一个单独的会话,因此不会保存我的数据。

在客户端

$.ajax({
  url: '/orders',
  method: 'post',
  data: { item: item }
});

在服务器上

router.post('/orders', function(req, res) {
  var sess = req.session,
      order = sess.order || [],
      item = req.body.item || '',
      quantity = req.body.quantity || 1;

  if (!item) return res.status(404).end();

  if (order[item]) {
    order[item] += quantity;
  } else {
    order[item] = quantity;
  }

  //save our order to the session
  req.session.order = order;
  req.session.save();
  console.log(req.session.order); // verified that req.session.order is set

  return res.status(200).end();
});

这不是CORS请求 - 是我从本地运行的客户端访问我的本地服务器。

2 个答案:

答案 0 :(得分:1)

将以下代码添加到ur $.ajax配置可能会解决问题:

$.ajax({
  xhrFields: {
    withCredentials: true
  },
  ... // other settings
})

答案 1 :(得分:0)

使用fetch为我工作,如下所示

fetch(url, { credentials: 'include',
             method: 'post',
             ...// other fetch configs
}).then(onsuccesscallback)

密钥在配置提取时包含凭据