zoukankan      html  css  js  c++  java
  • node.js下操作cookie

    cookie,又是cookie。工作中与cookie打交道很多次,不过时间跨度也大,每总结多一次,就加深了解多一点。

    cookie,一定是放在浏览器中的,用于浏览器保存一些小额度的内容。每次我们去访问服务器的时候,cookie都会附着在请求报文中,一起发送给服务器。服务器中没有cookie,它只是操作浏览器发送过来的cookie而已。也因为如此,我们在服务器端的代码中处理cookie的时候,比如变更某个cookie的值,其实这个更改对于浏览器而言,还没有生效,一定要返回到浏览器中,才会将这个更改真正实施。当然,在服务器端中,跟更改一个其他变量,比如session,没有什么两样,改了就是改了。
    注意:每次我们去访问服务器的时候,cookie都会附着在请求报文中,一起发送给服务器,但并不是所有的cookie都会发送,而是将当前访问的网站,相同顶级域名下的cookie随同发送。好比说,我浏览器访问过百度和网易,那么这两个站点都有cookie。当我访问百度的时候,浏览器就只发送百度的cookie;访问网易,就只发送网易的cookie。如果访问百度的时候,想访问网易的cookie,那叫跨域请求,好像比较困难。
    更多的情况下,是子域名访问父域名、顶级域名的cookie。好比说,baidu.com是顶级域名,www.baidu.com、news.baidu.com都是二级域名,http://guonei.news.baidu.com/是三级域名,……,如此类推。那么,顶级域名的cookie,二级、三级、子孙级等都能访问。反过来,子孙的域名是否能被父辈级域名访问,好像也可以,具体不记得了。
    总之,cookie有一个域。
    相同域名且同等级域名下,可以直接操作,无须指明域,node.js下也是如此:

    response.cookie('logFlag', 'out');

    但如果这个cookie是父级的,那么就要指明域,否则更改不了(但似乎可以直接读取):

    response.cookie('logFlag', 'out',{domain:'.baidu.com'});  

    第3个参数是个json,除了指明域名,还可以指明过期时间,路径,等等,看需要。
    现在的浏览器,可以看到这个cookie。比如我用chrome打开某个网站,然后按F12,然后选NetWork标签,左边列表点开cookie,情况会一目了然,很是好用。


  • 相关阅读:
    centos7安装mysql5.7
    Day1:基于ECS搭建FTP服务
    sql多表语句
    SSM多表查询
    ssm中使用逆向工程
    用maven对ssm进行整合
    Maven设置本地仓和阿里云远程仓
    解决maven项目中web.xml is missing and <failOnMissingWebXml> is set to true
    SSM登陆
    理解ConcurrentMap
  • 原文地址:https://www.cnblogs.com/leftfist/p/4257850.html
Copyright © 2011-2022 走看看