node.js中COOKIE的使用

node.js中如何向客户端发送COOKIE呢?
有以下两个方案:
    1、使用response.writeHead,代码示例:
    //设置过时时间为一分钟 javascript

var today = new Date();
    var time = today.getTime() + 60*1000;
    var time2 = new Date(time);
    var timeObj = time2.toGMTString();
    response.writeHead({
       'Set-Cookie':'myCookie="type=ninja", "language=javascript";path="/";Expires='+timeObj+';httpOnly=true'
    });


    语法以下(具体每一个字段的解释,请看下文的“options字段含义”):
        Set-Cookie:'
            cookieName=cookieValue;
            [expires=]
            [;domain=]
            [;path=]
            [;secure=]
            [;httpOnly=]
        '
    
    经过查看,COOKIE以下图所示:

    
    缺点:使用response.writeHead只能发送一次头部,即只能调用一次,且不能与response.render共存,不然会报错 php

    2、使用response.cookie,代码示例以下:
     html

response.cookie('haha', 'name1=value1&name2=value2', {maxAge:10*1000, path:'/', httpOnly:true});


    语法以下:
response.cookie('cookieName', 'name=value[name=value...]',[options]);


    options字段含义:
        一、expires:指定过时时间,以GMT格式表示的时间字符串,如方法一个的“timeObj”。
        二、maxAge:指定过时时间,同expires(expires和maxAge选二者其一设值便可)。和expires不一样之处在于,maxAge值的单位为毫秒(见方法二中的maxAge:10*1000,即为10秒)。maxAge值能够是正数和负数。正数表示当前COOKIE存活的时间。负数表示当前COOKIE只是随着浏览器存储在客户端的内存里,只要关闭浏览器,此COOKIE就立刻消失。默认值为-1。
        三、domain:指定可访问COOKIE的主机名。主机名是指同一个域名下的不一样主机。如:www.google.com和gmail.google.com是在两个不一样的主机上,即两个不一样的主机名。默认状况下,一个主机中建立的COOKIE在另外一个主机下是不能被访问,但能够经过domain参数来实现对其的控制,即所谓的跨子域。以google为例,要实现跨主机(跨子域)访问,写法以下:domain=.google.com,这样就实现了全部google.com下的主机均可以访问此COOKIE。(本机环境上设置此值时,COOKIE没法查看。    
        四、path:指定可访问此COOKIE的目录。如:path=/default  表示当前COOKIE仅能在 default 目录下使用。默认值为“/”,即根目录下的全部目录皆能够访问。
        五、secure:当设为true时,表示建立的COOKIE会以安全的形式向服务器传输,即只能在HTTPS链接中被浏览器传递到服务器端进行会话验证;如果HTTP链接则不会传递该信息,因此不会被窃取到COOKIE里的具体内容。同理,在客户端,咱们也没法使用document.cookie找到被设置了secure=true的cookie健值对。secure属性是防止信息在传递的过程当中被监听捕获后信息泄漏,httpOnly属性的目的是防止程序获取COOKIE后进行攻击(XSS)。咱们能够把secure=true当作比httpOnly=true是更严格的访问控制。 
        六、httpOnly:是微软对COOKIE作的扩展。若是在COOKIE中设置了“httpOnly”属性,则经过程序(JS脚本、applet等)将没法读取到COOKIE信息,防止XSS攻击产生。 

    经过查看,COOKIE以下图所示:
    
java

    参考资料:
        一、http://nodejs.org/api/http.html#http_response_setheader_name_value
        二、http://www.cnblogs.com/rubylouvre/archive/2012/08/19/2645644.html
        三、http://expressjs.com/api.html#res.cookie
        四、http://mao.li/node/node-js-handle-cookie/

node

相关文章
相关标签/搜索