Kei*_*ima 10 cookies node.js express
我正在使用cookie-parser,所有教程都谈论如何设置cookie以及它到期的时间但是没有教我们如何获取这些cookie的价值
M M*_*our 37
对于偶然发现这个问题的人,我是这样做的:
您需要安装 express cookie-parser 中间件,因为它不再与 express 打包在一起。
npm install --save cookie-parser
Run Code Online (Sandbox Code Playgroud)
然后这样设置:
const cookieParser = require("cookie-parser");
const app = express();
app.use(cookieParser());
Run Code Online (Sandbox Code Playgroud)
然后你可以访问cookies
req.cookies
Run Code Online (Sandbox Code Playgroud)
希望有所帮助。
小智 19
希望能帮到你
const app = require('express')();
app.use('/', (req, res) => {
var cookie = getcookie(req);
console.log(cookie);
});
function getcookie(req) {
var cookie = req.headers.cookie;
// user=someone; session=QyhYzXhkTZawIb5qSl3KKyPVN (this is my cookie i get)
return cookie.split('; ');
}
Run Code Online (Sandbox Code Playgroud)
输出
['user=someone', 'session=QyhYzXhkTZawIb5qSl3KKyPVN']
Run Code Online (Sandbox Code Playgroud)
Sha*_*ndo 16
首先请注意,Cookie会通过服务器请求发送到客户端并存储在客户端.每次用户加载网站时,都会随请求一起发送此cookie.
因此,您可以使用在客户端(例如,在客户端Java脚本中)访问cookie
document.cookie
Run Code Online (Sandbox Code Playgroud)
您可以通过打开浏览器的控制台(F12)并键入来在客户端进行测试
console.log(document.cookie);
Run Code Online (Sandbox Code Playgroud)
您可以使用从服务器(在您的情况下,expressjs)访问cookie
req.cookies
Run Code Online (Sandbox Code Playgroud)
最佳做法是检查客户端是否正确存储.请记住,并非所有浏览器都允许在未经用户许可的情况下存储Cookie.
根据你的评论,你的代码应该是这样的
var express = require('express');
var app = express();
var username ='username';
app.get('/', function(req, res){
res.cookie('user', username, {maxAge: 10800}).send('cookie set');
});
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
只是想补充一点,我们不应该使用模块来做琐碎的事情。模块是非常方便和快速的向前开发,但让我们无法通过创建基础结构代码来学习。
我是教授而不是老板,所以我更看重程序员的知识/技能发展,而不是在更短的时间内编写代码而不学习任何东西......
回到事业...
除非您需要签名的 cookie 或任何更复杂的东西,否则完全可以编写自己的中间件来解析 cookie 并将值添加到管道的其余部分,就像模块所做的那样。
app.use((req, res, next) => {
const { headers: { cookie } } = req;
if (cookie) {
const values = cookie.split(';').reduce((res, item) => {
const data = item.trim().split('=');
return { ...res, [data[0]]: data[1] };
}, {});
res.locals.cookie = values;
}
else res.locals.cookie = {};
next();
});
Run Code Online (Sandbox Code Playgroud)
您可以在任何需要读取 cookie 的地方通过res.locals.cookie方便地将其格式化为对象。
您甚至可以在此处添加自定义加密策略,以确保没有人阅读您的 cookie。
请记住中间件是有序的,因此必须在使用 cookie 的任何其他中间件或路由之前添加这个。
| 归档时间: |
|
| 查看次数: |
28861 次 |
| 最近记录: |