2017-05-10 2 views
1

쿠키를 HttpOnly로 정의하면 서버가 다시 시작된 후 request.state에서 쿠키가 사라집니다. 이것은 HttpOnly 사양의 일부로 보이지 않습니다. HapiJS에서이 문제를 해결할 방법이 있습니까?Hapijs - 서버를 다시 시작하면 HttpOnly 쿠키가 사라집니다.

// 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() 
}) 

답변

0

다음 코드를 확인하십시오. 서버를 다시 시작한 후에도 쿠키가 계속 살아 있는지 확인하십시오.

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() 
})