美文网首页
NodeJS操作和访问Cookie

NodeJS操作和访问Cookie

作者: v刺猬v | 来源:发表于2019-03-14 14:01 被阅读0次
  • Cookie是存在浏览器的一段字符串(最大5KB)
  • 跨域不共享
  • 格式:k1=v1;k2=v2;k3=v3; 因此可以储存结构化数据
  • 每次发送http请求,会将请求域的cookie一起发送给server
  • server可以修改cookie,并且返回给浏览器
  • 浏览器也可以通过Javascript修改cookie(有限制)

客户端通过Javascript查看/修改Cookie

  • 查看cookie的三种方式
    1. 通过浏览器控制台中的Network面板,查看请求,在Request Headers中的Cookie代表着客户端发送给服务器的Cookie;在Response HeadersSet-Cookie中表示服务器将Cookie重新设置后,又返回给了客户端
    2. 通过Application面板的Cookies可以查看当前浏览器中保存的解析后的各个域中的Cookie。
    3. 通过Javascript的document.cookie对象访问Cookie
  • 修改Cookie的方式
    1. 通过document.cookie对cookie进行修改;
    2. 通过各种JS库操作Cookie

随着HTML5,localStorage和sessionStorage,已经很少再去通过Javascript修改Cookie,作为客户端数本地数据存储的途径了。

Server端NodeJS操作Cookie

  • 查看Cookie
    在NodeJS中可以通过req.headers.cookie访问到原始的cookie字符串(k1=v1;k2=v2;),在这个基础上对cookie进行组装和解析

  • 修改Cookie
    通过NodeJS的res.setHeader()函数来重写cookie并返回给客户端,格式如下res.setHeader('Set-Cookie', ['key1=value1', 'path=/'])
    (ps: 还可以将使用res.setHeader('Set-Cookie', 'key1=value1;key2=value2'),通过一个字符串设置多条cookie的值,但是很多浏览器不支持这种方式,包括chrome)

  • 限制Cookie

    • 通过在Set-Cookie中设置expires,限制Cookie的过期时间;
    • 通过在Set-Cookie中设置path,限制Cookie的作用范围;
    • 通过在Set-Cookie中设置httpOnly,用来屏蔽在客户端通过Javascript访问和修改Cookie,从而提高系统安全性。
  • 综合示例

let http = require('http')

let app = http.createServer((req, res) => {
  // 服务器端读取cookie
  req.cookie = {}
  let cookies = req.headers.cookie ? req.headers.cookie.split(';') : []
  if (cookies.length > 0) {
    cookies.forEach(item => {
      if (item) {
        let cookieArray = item.split('=')
        if (cookieArray && cookieArray.length > 0) {
          let key = cookieArray[0].trim()
          let value = cookieArray[1] ? cookieArray[1].trim() : undefined
          req.cookie[key] = value
        }
      }
    })
  }
  // 服务器端设置cookie

  res.setHeader('Set-Cookie', `key1=value1;httpOnly;expires=${getExpireTime()}`)

  res.end(
    JSON.stringify(req.cookie)
  )
})

app.listen(3000, () => {
  console.log('running on 3000')
})

function getExpireTime () {
  let d = new Date()
  d.setTime(d.getTime() + 15 * 60 * 1000)
  return d.toUTCString()
}

相关文章

  • NodeJS操作和访问Cookie

    Cookie是存在浏览器的一段字符串(最大5KB) 跨域不共享 格式:k1=v1;k2=v2;k3=v3; 因此可...

  • Cookie

    参考链接:HTTP cookies 详解cookie/session 的机制与安全nodejs 操作 cookie...

  • 4.cookie

    COOKIE cookie设置值 name( Cookie名)可以通过$_COOKIE['name'] 进行访问v...

  • cookie概念及使用

    属性 name: cookie的名称 value:cookie的值 domain: 可以访问此cookie的域名 ...

  • cookie属性

    name: cookie名称 value: cookie值 domain: 即可访问此cookie的域名(不同级有...

  • cookie 与 session

    概念 Cookie Cookie的作用?Cookie可以让服务器程序跟踪每个客户端的访问。 “Set-Cookie...

  • 仿 VIP

    技术栈 Vue、Vue Router、NodeJS、MongoDB、memory-cache、js-cookie、...

  • nodejs操作cookie

    cookie可以记录用户操作状态,在服务器端也可以操作cookie,这也是session会话控制的依据点。 1.获...

  • NodeJS cookie session

    cookie : 在浏览器中保存数据 每次请求都会带过来 不安全 有限的,只有4ksession 保存数据,...

  • NodeJS 操作cookie

    本文简介 点赞 + 关注 + 收藏 = 学会了 虽然现在在浏览器存储数据大多时候都使用 LocalStorage ...

网友评论

      本文标题:NodeJS操作和访问Cookie

      本文链接:https://www.haomeiwen.com/subject/iivqmqtx.html