node.js - Hapijs - 服务器重新启动时 HttpOnly cookie 消失

标签 node.js cookies hapi.js

当我将 cookie 定义为 HttpOnly 时,该 cookie 会在服务器重新启动后从 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()
})

关于node.js - Hapijs - 服务器重新启动时 HttpOnly cookie 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43900239/

相关文章:

node.js - 如何在 hapi.js 中自定义验证错误响应?

Javascript - 无法确定 JSON 对象是否包含 true

node.js - Electron:尝试设置 `nativeTheme.themeSource` ,但 `nativeTheme` 未定义

javascript - 你能给我解释一下 Javascript cookie 教程的这行代码吗?

html - 在 IE 中清空 IMG SRC 触发注销

node.js - sequelize 集成到 hapi

javascript - 我正在尝试使用 Node 和 hapi.js 连接到我的 SQL Server 数据库

javascript - 多部分 HTTP 响应

json - NightmareJS 将变量保存到文件

javascript - Node 和 Angular cookie 路径