Nuxt中服务端请求无法获取LocalStorage和Cookie的解决办法!

简介: Nuxt中服务端请求无法获取LocalStorage和Cookie的解决办法!

解决办法

在plugins中新建localStorage.js文件,内容如下:

import createPersistedState from 'vuex-persistedstate';
import * as Cookies from "js-cookie";
let cookieStorage = {
getItem: function (key) {
return Cookies.getJSON(key);
  },
setItem: function (key, value) {
let obj = {}
if (value.loginState) {
      obj = {
token: value.token,
shopId: value.shopId,
loginState: value.loginState
      }
    } else {
      obj = {
token: '',
shopId: '',
loginState: false
      }
    }
return Cookies.set(key, obj, {
expires: 3,
secure: false
    });
  },
removeItem: function (key) {
return Cookies.remove(key);
  }
};
export default (context) => {
  createPersistedState({
storage: cookieStorage,
getState: cookieStorage.getItem,
setState: cookieStorage.setItem,
removeState: cookieStorage.removeItem,
  })(context.store);
};

使用方法

在nuxt.config.js中设置

plugins: [
    { src: '~/plugins/localStorage.js', ssr: false }
],

定义好以上方法后,我们在获取到vuex数据的时候就会调用对应的getItem 和 setItem方法,将vuex的内容写入到cookie中。

那我们就可以通过在asyncData中 app 默认值中获取到cookie中写入的数据。

async asyncData({ app, route, context, store }) {
let token = "";
let shopId = "";
if (
      app &&
      app.context &&
      app.context.req &&
      app.context.req.headers &&
      app.context.req.headers.cookie
    ) {
let arrCookie = app.context.req.headers.cookie.split(";");
let cookie = arrCookie.find(item => item.split("=")[0] === " vuex");
if (cookie) {
if (cookie.split("=")[1] != "") {
let cookieData = JSON.parse(
            decodeURIComponent(cookie ? cookie.split("=")[1] : "")
          );
          token = cookieData.token;
          shopId = cookieData.shopId;
        }
      }
    }
}
相关文章
|
1月前
|
前端开发
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
|
1月前
|
存储 缓存 JavaScript
cookie、localStorage 和SessionStorage的区别和特点?
cookie、localStorage 和SessionStorage的区别和特点?
22 0
|
1月前
|
存储 JavaScript 前端开发
js中session、cookie、 localStorage和SessionStorage的区别和特点
js中session、cookie、 localStorage和SessionStorage的区别和特点
|
1月前
发送带cookie的请求
发送带cookie的请求
30 1
|
9天前
|
存储 移动开发 JavaScript
对于session、cookie、 localStorage和SessionStorage的理解
对于session、cookie、 localStorage和SessionStorage的理解
16 0
|
1月前
|
存储 JavaScript 前端开发
JavaScript中的cookie、localStorage的区别和特点
JavaScript中的cookie、localStorage的区别和特点
24 6
|
1月前
|
存储 缓存
浏览器缓存sessionStorage、localStorage、Cookie
浏览器缓存sessionStorage、localStorage、Cookie
54 1
|
1月前
|
存储 JavaScript 前端开发
JavaScript DOM 操作:解释一下 cookie、sessionStorage 和 localStorage 的区别。
Cookie是服务器发送至客户端的文本信息,会随每个请求发送回服务器,适合控制会话状态但可能暴露隐私。SessionStorage仅在当前会话中存储数据,关闭浏览器后清除,适合临时存储如登录状态。LocalStorage则持久保存数据,即使关闭浏览器也不会清除,适用于存储长期设置。三种方式各有侧重,应按需求选择。
22 0
|
1月前
|
存储 前端开发 安全
【面试题】 面试官: 既然有了 cookie 为什么还要 localStorage?
【面试题】 面试官: 既然有了 cookie 为什么还要 localStorage?
|
1月前
|
存储 Web App开发 JavaScript
关于 HTTP 请求头部自动添加的 cookie 字段的逻辑
关于 HTTP 请求头部自动添加的 cookie 字段的逻辑