卖坚果的怪叔叔 卖坚果的怪叔叔
  • 首页
  • 生活
  • 技术
  • 记录
  • 工具箱
  • 关于我
首页 › 技术 › Nuxt中服务端请求无法获取LocalStorage和Cookie的解决办法!

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

坚果大叔
2021-09-03 17:12:27技术阅读 4,503

在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;
        }
      }
    }
}

Nuxt
赞赏 赞(0)
本文系作者 @坚果大叔 原创发布在 卖坚果的怪叔叔。未经许可,禁止转载。
生活就是每一帧每一秒
上一篇
又是周六的一天。
下一篇
在小程序中查看

这是个😊,挣点服务器费用😜

热门文章
病来如山倒!
H5在safari上fixed不触底bug?
使用encodeURI出现URI malformed报错?
JS生成随机验证码校验(前端)
Node.js内置模块
上线8年,15万用户的小程序,一共赚了多少钱?
专题标签
agent (1) CSS (15) dom (1) Es6入门系列 (14) Git (3) html (1) iview (1) JavaScript (9) js (4) Lif (1) Node (4) pyecharts (1) Python (10) ref (1) scriptable (1) Skill (1) vsCode (1) vue (4) wordpress (2) 三月 (1) 上海 (1) 假期 (1) 其他分享 (3) 前端两三问 (15) 古镇 (1) 外滩 (1) 对象 (1) 小程序 (5) 年度总结 (6) 年终总结 (1) 微信机器人 (4) 打字机 (1) 技术 (1) 日常问题 (8) 日常问题记录 (1) 春天 (2) 服务器 (2) 海族馆 (1) 生活 (8) 网上国网 (1) 记录 (3) 通勤 (1) 重学JavaScript (11) 面试题 (10) 🌸 (1)
什么是Agent?
2026-08-15 23:49:12
429 0 2
什么是 Skill?
2026-08-12 21:32:42
348 1 0
失业在家,我给小朋友做了一个练字小程序!
2026-08-07 16:21:52
690 10 1
上线8年,15万用户的小程序,一共赚了多少钱?
2026-05-30 18:01:24
4,683 4 0
  • 0
博主

一位佛系的前端开发者,略通摄影,乐于尝试新事物,热衷于美食。

友链
故事胶片
公众号
坚果大叔 执行上下文 卖坚果的怪叔叔 Dacking
Copyright © 2017-2026 卖坚果的怪叔叔

开往-友链接力

萌ICP备20230818号

苏ICP备18048410号-3
  • 首页
  • 生活
  • 技术
  • 记录
  • 工具箱
  • 关于我
# CSS # # JavaScript # # vue # # 微信 # # 生活 #
坚果大叔
345
文章
171
评论
432
喜欢