cookie

一、什么是cookie

        Cookie 是通过浏览器(cookie是前后端共享的,cookie肯定是存在浏览器的。)将服务器返回的数据保存在本地的一小块数据(一般小于4kb)。当浏览器发送请求且浏览器存在 Cookie 时,浏览器会自动在请求头携带上 Cookie 数据。

引入 Cookie 的意义是因为 HTTP 的请求是无状态的,如:浏览器发出的请求服务器没办法区分浏览器用户身份以及用户的相关操作状态(可以通过 Cookie 传递这些信息)。

最开始 Cookie 被作为唯一的存储手段,但是因为浏览器的每次请求都会携带上 Cookie,会带来额外的开销,而且存储量比较小,所以后来浏览器推出了新的 Api(web stoeage Api和 indexedDb)。

二、cookie使用的主要场景

  • 会话状态管理(如用户登录状态、及其他需要记录的信息)
  • 个性化设置(如用户自定义设置)
  • 浏览器追踪行为(如追踪分析用户行为)

三、cookie的创建

1.浏览器自动创建

当服务器收到 HTTP 请求时,服务器可以在响应头里设置一个 Set-cookie 选项,浏览器接收到响应后会自动保存下 Cookie,之后浏览器对该服务器的每一次请求中都会通过请求头把 Cookie 信息发送给服务器。

2.通过 js 设置 Cookie (也可以设置过期时间、域名、路径等)

基本用法

// 可以直接在浏览器控制台输入进行测试

document.cookie = "token=dsagsdshj43sfs";

四、Cookie 的设置详解

1.过期时间设置(Expires 字段)

设置 Cookie 30s 后过期

设置 Cookie 30s 后过期
// 30s 后浏览器 cookie 自动清空
res.cookie('token','dsafdsfd453542scdsfd',{expires:new Date(Date.now() + 30*1000)})

2.设置一段时间过期。(Max-Age

设置 Cookie 20s 后过期

res.cookie('token','dsafdsfd453542scdsfd',{maxAge:20*1000})

3.设置域(domain),指定 cookie 在哪个域下可以被接受

注:如果不指定 domain 则默认是当前源(origin),但不包括子域名。如果指定了 Domain 则一般包含子域名(二级域名、三级域名)

res.cookie('token','dsafdsfd453542scdsfd',{domain:'localhost'})

扩展

csdn的html能够访问baidu的cookie吗?

不能,因为cookie是域名的隔离的

www.baidu.com  一级域名       www.baidu.com.cn   二级域名

(二级域名肯定属于一级域名)

二级域名能够读到一级域名的ck吗? 可以

 一级域名能够读到二级域名的ck吗?可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值