获取浏览器cookie,并将其传递到服务器端渲染nuxt js

时间:2018-04-13 01:53:08

标签: vue.js axios nuxt.js

我用nuxt js开发了一个项目。我在下面遇到这样的问题。

  • 我从异步ajax的后端的restful api得到结果 请求。
  • 我需要将结果作为标题添加到每个任务中 ajax axios库。
  • 所以我将结果保存在浏览器cookie上。
  • 当我需要结果时,我从cookie中获取它,并将其附加到axios上 请求。

现在,问题是在服务器端呈现,我无法获取浏览器cookie。

我该怎么处理这个问题?

2 个答案:

答案 0 :(得分:0)

您可以将所需信息存储在本地存储和存储中。 cookie,例如。

import Cookie from 'js-cookie'
....
setCookie(state, value) {
  if (process.client) {
    localStorage.setItem('cookie', value);
  }
  Cookie.set('cookie', value)
}

阅读它(cookie自动包含在请求中)

getCookie(context, req) {
  // if server
  if (req) {
    if (req.headers.cookie) {
      const cookie = req.headers.cookie.split(';').find(...)
    }
  }
  // if client
  if (process.client) {
    const cookie = localStorage.getItem('cookie');
  }
}

并删除

removeCookie(state) {
  if (process.client) {
    localStorage.removeItem('cookie');
  }
  Cookie.remove('cookie');
}

答案 1 :(得分:0)

首先,您可以从nuxt req获得res(请求)和context(响应)。

您可以通过

设置cookie
// client side
document.cookie = 'sessionId=some-id;';
document.cookie = 'userId=awesome-id;';

// or server side
res.setHeader('Set-Cookie', ['sessionId=some-id;', 'userId=awesome-id;']);