首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用express框架在node js中设置cookie?

如何使用express框架在node js中设置cookie?
EN

Stack Overflow用户
提问于 2013-04-25 15:48:37
回答 2查看 386.7K关注 0票数 211

在我的应用程序中,我需要使用express框架设置cookie。我已经尝试了下面的代码,但它没有设置cookie。

var express = require('express'), http = require('http');
var app = express();
app.configure(function(){
      app.use(express.cookieParser());
      app.use(express.static(__dirname + '/public'));

      app.use(function (req, res) {
           var randomNumber=Math.random().toString();
           randomNumber=randomNumber.substring(2,randomNumber.length);
           res.cookie('cokkieName',randomNumber, { maxAge: 900000, httpOnly: true })

           console.log('cookie have created successfully');
      });

});

var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(5555);
EN

回答 2

Stack Overflow用户

发布于 2017-03-11 20:16:27

没有完全回答你的问题,但我是在寻找我所遇到的问题的答案时遇到你的问题的。也许这对其他人有帮助。

我的问题是cookie是在服务器响应中设置的,而不是由浏览器保存的。

服务器响应返回时设置了cookies:

Set-Cookie:my_cookie=HelloWorld; Path=/; Expires=Wed, 15 Mar 2017 15:59:59 GMT 

这就是我解决这个问题的方法。

我在客户端代码中使用了fetch。如果未在fetch选项中指定credentials: 'include',则cookies既不会发送到服务器,也不会由浏览器保存,即使服务器响应设置cookies也是如此。

示例:

var headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Accept', 'application/json');

return fetch('/your/server_endpoint', {
    method: 'POST',
    mode: 'same-origin',
    redirect: 'follow',
    credentials: 'include', // Don't forget to specify this if you need cookies
    headers: headers,
    body: JSON.stringify({
        first_name: 'John',
        last_name: 'Doe'
    })
})
票数 48
EN

Stack Overflow用户

发布于 2022-02-01 09:54:54

同构读取cookie帮助器:

function getCookieValue(cookieName = '', cookie = '') {
  const matches = cookie.match(`(^|[^;]+)\\s*${cookieName}\\s*=\\s*([^;]+)`)
  return matches ? matches.pop() : ''
}

// Node with express:
getCookieValue('cookieName', req.headers.cookie)

// Browser:
getCookieValue('cookieName', document.cookie)

使用express在Node中写入:

res.cookie('cookieName', 'cookieValue')

在浏览器中写入:

function setCookie(
  cname,
  cvalue,
  exdays = 100 * 365 /* 100 days */
) {
  const now = new Date()
  const expireMs = exdays * 24 * 60 * 60 * 1000
  now.setTime(now.getTime() + expireMs)

  document.cookie = `${cname}=${cvalue};expires=${now.toUTCString()};path=/`
}

// Example of usage
setCookie('cookieName', 'cookieValue')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16209145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档