美文网首页
express中cookie-parser的实现原理

express中cookie-parser的实现原理

作者: Jason_Zeng | 来源:发表于2019-08-17 16:57 被阅读0次

以前一直疑惑的浏览器中的cookie是怎么储存的,怎么用的,这次都可以通过下面参数来控制cookie的一些基本用法,本质上还是再http请求头里按照分号(;)来设置各种配置信息,浏览器读取控制cookie的功能

简单的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) { // 哪个子路由下面有效
            parts.push([`Path=${path}`]);
        }
        if (expires) { // 绝对过期时间
            parts.push([`Expires=${expires.toUTCString()}`]);
        }
        if (maxAge) { // 相对过期时间
            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);
    }

    // 这个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只能发射buffer和字符串
});

app.get("/read2",function(req, res) {
    // 但是express却没有自己读取cookie的方法
    //  let cookie = req.headers["cookie"];
    // req.cookies : cookieParser的用途
    res.send(req.cookies);
    // res.end只能发射buffer和字符串
})

app.listen(8080);

相关文章

  • express中cookie-parser的实现原理

    以前一直疑惑的浏览器中的cookie是怎么储存的,怎么用的,这次都可以通过下面参数来控制cookie的一些基本用法...

  • npm包

    Express中间件(body-parser、cookie-parser、morgan)用法与原理 0.linux...

  • cookie-parser项目源码阅读

    cookie-parser相信使用过Express的人肯定使用过,cookie-parser是一个Express解...

  • express 和 koa

    express req.cookies cookie-parser 处理cookie挂载 req.query, r...

  • express中cookie的使用和cookie-parser的

    最近在研究express,学着使用cookie,开始不会用,就百度了一下,没有百度到特别完整的解答。查阅了expr...

  • Session原理、安全以及最基本的Express和Redis实

    Session原理、安全以及最基本的Express和Redis实现 Session基础概念 Session管理是W...

  • 一个例子 - 看尽express.js原理

    本文只是实现了express的基本用法的原理,具体代码结构和真正的express.js代码结构不一样,可以说是简化...

  • express基本原理

    了解 express 原理之前,你需要先掌握 express 的基本用法。 关于 express 的介绍请看 ex...

  • 重写express

    模拟express 的实现原理* use()添加到 md 的中间件函数。 把路由部分routers,在函数rout...

  • express 中間件原理

    有時候面試,老是被問到一些自己使用過的技術,但是僅僅限於使用,這個是真沒深入研究過,鄙人能力有限的緣故吧。但是呢,...

网友评论

      本文标题:express中cookie-parser的实现原理

      本文链接:https://www.haomeiwen.com/subject/ugdksctx.html