Node.js Hapijs-HttpOnly cookies在服务器重新启动时消失
当我将cookie定义为HttpOnly时,该cookie在服务器重新启动后从Node.js Hapijs-HttpOnly cookies在服务器重新启动时消失,node.js,cookies,hapijs,Node.js,Cookies,Hapijs,当我将cookie定义为HttpOnly时,该cookie在服务器重新启动后从request.state中消失。这似乎不是HttpOnly规范的一部分。在HapiJS中有没有办法解决这个问题 // cookie definition server.state('my_cookie', { ttl: YEAR_IN_MS, isSecure: false, isHttpOnly: true, encoding: 'base64json', clearInva
request.state
中消失。这似乎不是HttpOnly规范的一部分。在HapiJS中有没有办法解决这个问题
// cookie definition
server.state('my_cookie', {
ttl: YEAR_IN_MS,
isSecure: false,
isHttpOnly: true,
encoding: 'base64json',
clearInvalid: false,
strictHeader: true,
path: '/'
}
server.ext('onPreResponse', function(request, reply) {
console.log(request.state.my_cookie) // returns undefined after server restart
reply.continue()
})
检查以下代码段,cookie在服务器重新启动后仍处于活动状态
const Hapi = require('hapi');
const server = new Hapi.Server();
server.connection({ port: 8005, host: 'localhost' });
server.start((err) => {
if (err) {
throw err;
}
console.log(`Server running at: ${server.info.uri}`);
});
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
//Cookie: { "foo": "Bar0.3077739876826606" }
reply('Cookie: ' + JSON.stringify(request.state.my_cookie, null, '\t'))
}
});
server.route({
method: 'GET',
path: '/set-cookie',
handler: function (request, reply) {
return reply('Success').state('my_cookie', { foo: 'Bar' + Math.random() })
}
});
const YEAR_IN_MS = 86400000 * 365
// cookie definition
server.state('my_cookie', {
ttl: YEAR_IN_MS,
isSecure: false,
isHttpOnly: true,
encoding: 'base64json',
clearInvalid: false,
strictHeader: true,
path: '/'
})
server.ext('onPreResponse', function(request, reply) {
console.log(request.state.my_cookie) //{ foo: 'Bar0.3077739876826606' }
reply.continue()
})
检查以下代码段,cookie在服务器重新启动后仍处于活动状态
const Hapi = require('hapi');
const server = new Hapi.Server();
server.connection({ port: 8005, host: 'localhost' });
server.start((err) => {
if (err) {
throw err;
}
console.log(`Server running at: ${server.info.uri}`);
});
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
//Cookie: { "foo": "Bar0.3077739876826606" }
reply('Cookie: ' + JSON.stringify(request.state.my_cookie, null, '\t'))
}
});
server.route({
method: 'GET',
path: '/set-cookie',
handler: function (request, reply) {
return reply('Success').state('my_cookie', { foo: 'Bar' + Math.random() })
}
});
const YEAR_IN_MS = 86400000 * 365
// cookie definition
server.state('my_cookie', {
ttl: YEAR_IN_MS,
isSecure: false,
isHttpOnly: true,
encoding: 'base64json',
clearInvalid: false,
strictHeader: true,
path: '/'
})
server.ext('onPreResponse', function(request, reply) {
console.log(request.state.my_cookie) //{ foo: 'Bar0.3077739876826606' }
reply.continue()
})