Javascript Node.js Cookies不工作
所以我在我的网站上托管了一个node.js文件,我试图通过cookies获取数据。 我正在使用editmycookie,我可以看到cookies已经设置好了 我有一个函数,可以从一个名字中获取cookiesJavascript Node.js Cookies不工作,javascript,node.js,Javascript,Node.js,所以我在我的网站上托管了一个node.js文件,我试图通过cookies获取数据。 我正在使用editmycookie,我可以看到cookies已经设置好了 我有一个函数,可以从一个名字中获取cookies function parseCookies(request, finding){ rc = request.headers.cookie + ';'; rc && rc.split(';').forEach(function( cookie ) { v
function parseCookies(request, finding){
rc = request.headers.cookie + ';';
rc && rc.split(';').forEach(function( cookie ) {
var parts = cookie.split('=');
if(parts.shift().trim() == finding){
return decodeURI(parts.join('=')).replace(/-/g, '=');
}
});
}
然后我运行这个,知道cookies已经设置好了
app.get('/', function(req, res){
user = parseCookies(req, 'user');
pass = parseCookies(req, 'pass');
console.log(user + pass);
记录为NaN
对不起,我还在学习
如果有帮助的话,我在Ubuntu 16.04上\
奇怪的是,它对我网站上的一些用户有效,而对一些用户无效。我没有注意到谁工作谁不工作的模式。使用此代码设置cookies,让我们看看它是如何工作的
var http = require('http');
function parseCookies (request) {
var list = {},
rc = request.headers.cookie;
rc && rc.split(';').forEach(function( cookie ) {
var parts = cookie.split('=');
list[parts.shift().trim()] = decodeURI(parts.join('='));
});
return list;
}
http.createServer(function (request, response) {
// To Read a Cookie
var 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);
console.log('Server running at http://127.0.0.1:8124/');
并添加您要呼叫的路线。希望此hepls为您服务。使用此代码设置cookies,让我们看看它是如何工作的
var http = require('http');
function parseCookies (request) {
var list = {},
rc = request.headers.cookie;
rc && rc.split(';').forEach(function( cookie ) {
var parts = cookie.split('=');
list[parts.shift().trim()] = decodeURI(parts.join('='));
});
return list;
}
http.createServer(function (request, response) {
// To Read a Cookie
var 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);
console.log('Server running at http://127.0.0.1:8124/');
并添加您要调用的路由。希望此hepls为您所用。您没有从
parseCookies
函数返回任何内容,返回decodeURI(parts.join('='))。replace(/-/g,'=')
是通过foreach的回调调用的,因此此返回没有意义
因为对于该parseCookies
返回undefined
,undefined+undefined
是NaN
使用forEach
时,需要将匹配的结果保存在临时变量result
中,然后返回此变量
function parseCookies(request, finding) {
var result;
var rc = request.headers.cookie + ';';
rc && rc.split(';').forEach(function(cookie) {
var parts = cookie.split('=');
if (parts.shift().trim() == finding) {
result = decodeURI(parts.join('=')).replace(/-/g, '=');
}
});
return result;
}
或者使用(我没有时间测试该版本,所以可能有bug):
但你为什么要自己解析这些饼干呢。有一些健壮且经过良好测试的中间件可以为您实现这一点。您不会从
parseCookies
函数返回任何内容,返回decodeURI(parts.join('='))。replace(/-/g,'=')
是通过foreach的回调调用的,因此此返回没有意义
因为对于该parseCookies
返回undefined
,undefined+undefined
是NaN
使用forEach
时,需要将匹配的结果保存在临时变量result
中,然后返回此变量
function parseCookies(request, finding) {
var result;
var rc = request.headers.cookie + ';';
rc && rc.split(';').forEach(function(cookie) {
var parts = cookie.split('=');
if (parts.shift().trim() == finding) {
result = decodeURI(parts.join('=')).replace(/-/g, '=');
}
});
return result;
}
或者使用(我没有时间测试该版本,所以可能有bug):
但你为什么要自己解析这些饼干呢。有强大且经过良好测试的中间件可以为您做到这一点