在我的应用程序中,我需要使用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);
发布于 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'
})
})
发布于 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')
https://stackoverflow.com/questions/16209145
复制相似问题