Nodejs环境下,浏览器可以有几个cookie?

Nodejs环境下,浏览器可以有几个cookie?

怎么有两个cookie字段?

这个csrf cookie是干啥的?

5 回复

Node.js环境下,浏览器可以有几个cookie?

在Node.js环境中,浏览器可以存储多个cookie。每个域名下的cookie数量没有严格的限制,但不同的浏览器对单个域名下cookie的总大小有限制。例如,Chrome和大多数现代浏览器允许每个域名最多存储4096字节的数据。

示例代码

假设我们使用Express框架来设置和读取cookie:

const express = require('express');
const app = express();
const cookieParser = require('cookie-parser');

app.use(cookieParser());

// 设置两个cookie
app.get('/set-cookies', (req, res) => {
    res.cookie('session', '1234567890');
    res.cookie('csrfToken', 'abc123xyz');
    res.send('Cookies have been set.');
});

// 读取cookie
app.get('/read-cookies', (req, res) => {
    const sessionCookie = req.cookies.session;
    const csrfCookie = req.cookies.csrfToken;

    res.send(`Session Cookie: ${sessionCookie}, CSRF Token: ${csrfToken}`);
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

在这个例子中,我们设置了两个cookie:sessioncsrfToken。当用户访问/set-cookies路径时,这两个cookie将被设置到用户的浏览器中。

关于csrf cookie

csrfToken 是一种用于防止跨站请求伪造(CSRF)攻击的安全措施。CSRF攻击通常发生在用户已经登录某个网站的情况下,攻击者通过某种方式诱使用户点击恶意链接,从而利用用户的登录状态执行非授权操作。

在上面的例子中,csrfToken 作为cookie存储在浏览器中,并且在用户发送请求时附带发送。服务器端会验证该token是否合法,以确保请求来自合法的来源。

总结

  • 浏览器可以存储多个cookie。
  • 不同浏览器对cookie的大小有限制,通常是每个域名最多4096字节。
  • CSRF token是一种安全机制,用于防止CSRF攻击。

header可以随意定义,只是命名以cookie结尾并不是cookie,csrf你可以搜一下

那些header只是一个标签,那怕你这样写"hi":"girls" 你也会正常看到。

这个涉及到http协议的内容了… http协议是头+实体的结构

在Node.js环境中,浏览器可以存储多个Cookie,但这取决于客户端(通常是浏览器)的实现。一般来说,主流浏览器对每个域名的Cookie数量限制是有限制的。例如,Chrome 浏览器允许每个域名最多存储 150 个Cookie。

示例代码

下面的示例展示了如何在Node.js中设置和获取多个Cookie。

设置多个Cookie

使用 cookie 模块来设置多个Cookie。

const express = require('express');
const cookieParser = require('cookie-parser');

const app = express();
app.use(cookieParser());

app.get('/', (req, res) => {
    // 设置两个Cookie
    res.cookie('session', '1234567890'); // 用户会话ID
    res.cookie('csrf', 'abc123456'); // CSRF Token

    res.send('Cookies have been set!');
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

获取多个Cookie

你可以通过 req.cookies 来访问这些Cookie。

app.get('/read-cookies', (req, res) => {
    const sessionCookie = req.cookies.session;
    const csrfCookie = req.cookies.csrf;

    console.log(`Session Cookie: ${sessionCookie}`);
    console.log(`CSRF Cookie: ${csrfCookie}`);

    res.send('Check the console for the cookies.');
});

解释

  • Session Cookie: 用于用户会话管理。
  • CSRF Cookie: 用于防御跨站请求伪造攻击(Cross-Site Request Forgery)。它通常包含一个随机生成的令牌,客户端在提交表单时需要包含这个令牌,后端会验证该令牌以确保请求的有效性。

这两个Cookie的作用不同,session Cookie用于保持用户的登录状态,而 csrf Cookie则用于保护网站免受恶意请求。

回到顶部