2014-10-17 65 views
1

我试图通过使用以下方法集与Node.js的

response.setHeader("Set-Cookie", "username=" + data.name); 

数据变量设置在node.js的一些报头的Cookie的HTTP报头的Cookie是JSON对象包含多个字段/值的,通过以前发送的ajax请求接收。 data.name字段显然是填充的(前一个console.log(data.name)显示的值正确)。

然而,在浏览器中,一旦这个报头已经到Response.End()发送的,它显示了以下列方式(在浏览器,在检查在网络标签响应标头)

Set-Cookie:username=undefined 

有没有人有一个想法如何正确地做到这一点?

我想要完成的是在整个会话期间识别用户而不使用使用像express.js这样的任何第三方扩展。我已经尝试使用session.js没有成功。

感谢任何想法。

+0

'usermail'!=='username'。这只是一个错字,还是可能导致你的问题? – mscdex 2014-10-17 21:09:44

+0

谢谢你指出。这只是一个错字。 – tricon 2014-10-18 14:42:42

+0

如果在setHeader之前直接放置console.log(data.name),该值是否会显示? – 2014-10-18 15:19:04

回答

1

虽然我知道你说你确定定义了data.name,但你的代码看起来很简单,我在质疑它是否被实际定义。

而不是登录到控制台,尝试用一些明确的检查设定头的cookie:

response.setHeader(
    "username=" + 
    (
     data ? 
      data.hasOwnProperty("name") ? 
       data.name ? 
        data.name : "name empty" 
       : "name undefined" 
      : "data undefined" 
    ) 
); 

这不会解决你的问题,但会帮助你了解什么data.name部分没有如预期运行。

+0

谢谢,这导致我的解决方案。我觉得有点愚蠢 - 我有两个嵌套的回调,都使用了一个名为“数据”的变量,所以显然我试图从“数据”对象读取“名称”字段,它被第二个“数据”对象覆盖在内部功能。 – tricon 2014-10-19 20:28:37