以前一直疑惑的瀏覽器中的cookie是怎么儲(chǔ)存的,怎么用的晨仑,這次都可以通過下面參數(shù)來控制cookie的一些基本用法,本質(zhì)上還是再http請(qǐng)求頭里按照分號(hào)(;)來設(shè)置各種配置信息,瀏覽器讀取控制cookie的功能
簡(jiǎn)單的cookie-parser的源碼如下
const express = require("express");
const cookieParser = require("cookie-parser");
const app = express();
app.use(cookieParser());
app.get("/write",function(req,res) {
// cookie-parser的解析原理
res.cookie2 = function(key, value, options) {
let { domain,path,expires,maxAge, secure, httpOnly } = options;
let parts = [`${key}=${value}`];
if (domain) { // 指定域名有效
parts.push([`Domain=${domain}`]);
}
if (path) { // 哪個(gè)子路由下面有效
parts.push([`Path=${path}`]);
}
if (expires) { // 絕對(duì)過期時(shí)間
parts.push([`Expires=${expires.toUTCString()}`]);
}
if (maxAge) { // 相對(duì)過期時(shí)間
parts.push([`Max-Age=${maxAge}`]);
}
if (httpOnly) { // 不允許客戶端通過瀏覽器訪問cookie
parts.push([`httpOnly`]);
}
if (secure) { // 是否只能https訪問
parts.push([`Secure=${secure}`]);
}
let cookie = parts.join("; ");
res.setHeader("Set-Cookie",cookie);
}
// 這個(gè)cookie方法是express提供的
res.cookie2("name","jason", {
domain: "localhost",
httpOnly: true,
maxAge: 20*1000,
path: "/read2",
expires: new Date(Date.now() + 20*1000)
});
res.end("write ok");
});
app.get("/read",function(req, res) {
// 但是express卻沒有自己讀取cookie的方法
// let cookie = req.headers["cookie"];
// req.cookies : cookieParser的用途
res.send(req.cookies);
// res.end只能發(fā)射buffer和字符串
});
app.get("/read2",function(req, res) {
// 但是express卻沒有自己讀取cookie的方法
// let cookie = req.headers["cookie"];
// req.cookies : cookieParser的用途
res.send(req.cookies);
// res.end只能發(fā)射buffer和字符串
})
app.listen(8080);