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

soa*_*lue 6 vue.js axios nuxt.js

我用 nuxt js 开发一个项目。我遇到如下问题。

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

现在,问题出在服务器端渲染上,我无法获取浏览器cookie。

遇到问题我该怎么办?

Pra*_*kus 5

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

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

读取它(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');
  }
}
Run Code Online (Sandbox Code Playgroud)

并删除

removeCookie(state) {
  if (process.client) {
    localStorage.removeItem('cookie');
  }
  Cookie.remove('cookie');
}
Run Code Online (Sandbox Code Playgroud)