我希望能够设置一个cookie,并在向nodejs服务器实例发出的每个请求中读取该cookie.它可以在几行代码中完成,而不需要引入第三方库吗?

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

只是想直接从nodejs获取上面的代码.组织,并在其中加入一块cookies .

推荐答案

我没有快速访问Cookie的功能:

const http = require('http');

function parseCookies (request) {
    const list = {};
    const cookieHeader = request.headers?.cookie;
    if (!cookieHeader) return list;

    cookieHeader.split(`;`).forEach(function(cookie) {
        let [ name, ...rest] = cookie.split(`=`);
        name = name?.trim();
        if (!name) return;
        const value = rest.join(`=`).trim();
        if (!value) return;
        list[name] = decodeURIComponent(value);
    });

    return list;
}

const server = http.createServer(function (request, response) {
    // To Read a Cookie
    const cookies = parseCookies(request);

    // To Write a Cookie
    response.writeHead(200, {
        "Set-Cookie": `mycookie=test`,
        "Content-Type": `text/plain`
    });

    response.end(`Hello World\n`);
}).listen(8124);

const {address, port} = server.address();
console.log(`Server running at http://${address}:${port}`);

这会将所有cookies存储到cookies对象中,在写入头部时需要设置cookies.

Node.js相关问答推荐

Windows上使用ES6+的OpenAPI规范的Express服务器不接受嵌套路由'

在Nest.Js中,如何发送带有表单数据的正文请求并应用正文请求验证.附加的文件是可选的

如何在医学中按patientId查找一个并同时插入多个数据

验证器功能在mongoose 中不起作用

为什么即使数据库确实更新了,此 POST 也无法解析并返回 200 代码?

如果我在 tsx 文件中使用了use client,ssr 会如何发生?

在 linux mint 上部署 node 应用程序的最简单方法是什么?

如何在没有 Typescript 的情况下以交互方式使用 Create-React-App?

Node.js |如何在微服务之间转发标头?

为什么我的 Heroku Express API 数据是持久的,即使它只是来自一个变量

类 WebSwapCGLLayer 在 Mac OS X /System 和 node_modules 中都实现了

Aptana Studio 是否有 NodeJS 插件?

从 CoffeeScript 中的数组中删除一个值

运行摩卡+伊斯坦布尔+通天塔

已安装全局 NPM 包但未找到命令

代理(如提琴手)可以与 Node.js 的 ClientRequest 一起使用吗

Selenium WebDriver 等到元素显示

什么是 JavaScript 中的REPL?

如何让 Mocha 加载定义全局挂钩或实用程序的 helper.js 文件?

Nodejs将字符串转换为UTF-8