解决 Egg.js 中 Cookie 读取为 undefined 的问题
为了共享用户数据,在 Eggjs 里面设置登录信息,然后前端直接读取,发现无论怎么读取,都是 undefined,一度怀疑是不是之前的工具函数有问题了,仔细查看了 Eggjs 的文档,发现在使用 cookie 的时候必须要设置的几个参数,其中 httpOnly 需要设置为 false,signed 需要设置为false,域名要设置为共享 cookie 页面的域名。
此处有一个问题是,encrypt 参数的设置默认为 false 所以这里没有设置,如果设置为 true 也会读不到 token 这个原因我在官网上也没找到,可能是加解密的问题。
var token = this.ctx.cookies.set('token', { // 只允许服务端访问cookie httpOnly: false, // 对cookie进行签名,防止用户修改cookie signed: false , //设置键值对生效的域名,默认没有配置,可以配置成只在指定域名才能访问。 domain:'.g3s.com', //设置键值对生效的 URL 路径,默认设置在根路径上(/), //也就是当前域名下的所有 URL 都可以访问这个 Cookie。 path:'/' });
以下为官网的解释因此,前面一定要设置为 false。
在所有提到了 cookie 的位置都需要对参数进行设置,get 函数中的参数需要与 set 函数中的参数一致,不然的话也会出现 undefined 的情况。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论