13-cookie运用

本笔记记录cookie缓存相关知识点

cookie简介:

  • cookie是存储于访问者的计算机中的变量,可以在同一游览器访问同一个域名的时候共享数据。
  • 因为HTTP是无状态的协议,从一个游览页面转到同一个域名下的另一个页面,服务器是无法识别这是同一个游览器在访问同一个页面,每次访问的页面与页面之间是没有关系的。因此,cookie缓存在其中可以建立页面与页面之间的联系,将一个页面的变量存放起来,在同一个域名下另外一个页面中也能正常使用。
  • w3s官方说的更易懂一点,cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个
    cookie。
  • cookie 是访问过的网站创建的文件,用于存储浏览信息,例如个人资料信息。

cookie的特点:

  • 保存位置是在本地游览器。
  • 正常设置的cookie是不加密的,用户可以自由看到。
  • 用户可以主动删除cookie,或者禁用。
  • cookie可以被篡改或用于攻击。
  • cookie的存储量很小,每个 cookie 所存放的数据不能超过4kb,未来实际上会被localStorage替代。

cookie的使用:这里通过具体代码进行解释

// 客户端游览器存储cookie的使用
// 使用cookie-parser模块进行存储操作

// 引入express框架,方便搭建服务器
let express = require('express');
// 搭建服务器
let app = express();

// 1.安装cookie-parser模块之后,引入该模块
let cookieParser = require('cookie-parser');
// 2.设置中间件, 传入回调函数作为参数
// 设置signed属性为true后,需要cookieParser()添加字符串形式的加密参数
// 报错信息:cookieParser("secret") required for signed cookies
app.use( cookieParser('123456') );

// 搭建路由
app.get( '/', ( req, res )=>{
    // 打印cookies缓存信息
    // 因为设置了标记加密的属性signed: true,因此访问cookie需要这样req.signedCookies
    if( req.signedCookies ){
        console.log( req.signedCookies );
    }
    if( req.cookies ){
        console.log( req.cookies );
    }
    res.send( '这是首页' );
} )

app.get( '/news', ( req, res )=>{
    res.send( '这是新闻页面' );
} )

app.get( '/setnews', ( req, res )=>{
    // 3.配置cookie缓存信息
    // 常用参数:
    // name-cookie的名称,必需
    // value-cookie的值,必需
    // maxage: 最大的cookie失效时间
    // secure: 为true时,cookie在http中无效,https中有效
    // Path: 表示cookie影响的路径,如果不匹配路径,则游览器无法发送cookie信息
    // httpOnly: 如果为true,则无法通过程序(js脚本,applet等)读取到cookie信息,防止了XSS攻击产生
    // signed: 标记加密,设置为true,表示对cookie进行签名,这样只能用res.signedCookies访问,而不能用res.cookies访问。且被篡改的签名cookie会被服务器拒绝,并且重置
    // domain: 设置的代理域名
    
    // res.cookie( name, value, {maxAge: 900000, [...]} );

    // 如果是在同一域名下,那么cookie会被缓存记录下来; 跨域请求则不会缓存cookie信息
    // 即cookie缓存遵循同源策略:同协议,同域名,同端口,其中有一个或以上不同则为跨域
    // 如果需要不同的域名共享cookie,可以通过设置domain参数,设置需要共享的域名

    res.cookie( 'user', 'linx', {maxAge:600000, secure: false, signed: true} );
    res.send( '这是新闻配置页面' );
} )

// 监听端口
app.listen( 8000, '127.0.0.1' );
  • 按照上面代码的三个步骤去简单使用cookie就明白,cookie是在进入到某一路由下才进行的一系列的配置,除了重要的name和value的基本配置,其余根据需要选择属性添加即可。
  • 需要注意的是signed标记之后,需要添加加密方式,之后会对value值进行加密操作。以及跨域的情况下,cookie是不会共享的,除非进行domain的域名配置,如果是在本地服务器,可以修改本地host文本文件,在其中放行你设置的域名,使其可以对cookie进行共享,即可观察到跨域仍能共享cookie的现象。
    host文件修改
  • 当你设置好了cookie后,可以在游览器开发者工具中按照如下步骤进行查看cookie的配置。
    开发者工具中cookie
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐沐茶壶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值