谈谈Cookie在客户端和服务的使用

定义

用来给无状态的http请求增添状态标记,供服务端辨识,也称客户端缓存.


cookie的结构

  • key:cookie的名称
  • value:cookie的值
  • expires:cookie的失效日期(UTC时间字符串)
  • max-age:cookie的失效间隔(),优先级高于expires
  • path:根据目录限制cookie的分享,如不主动设置,默认为当前页面的路径
  • domain:根据域名限制cookie的分享

cookie的分类

客户端

可以设置、更改、删除cookie

document.cookie = "name=hezebing;max-age=60";更改或新增cookie,并设置1分钟的有效期
document.cookie = "name=;max-age=-1";//删除key为name的cookie
服务端

也可以设置cookie

//node, express
app.get('/test', function(req, res, next) {
    res.cookie(key,value,{
        maxAge:1000,//毫秒为单位,
        //domain
        //path
        httpOnly:boolean,//设置为true,客户端无法查看、更改,仅作为发送至服务端的凭据
    })
    //不设置表示无期限
    res.cookie(key,value)
})

cookie的使用

客户端发送http请求是会携带cookie(凭证)到服务端。

默认携带
  • ajax请求(不跨域)
  • jsonp请求
需要额外设置
  • cors(跨域资源贡献)请求(XMLHttpRequest):xhr.withCredentials = true;
  • fetch请求(fetch接口)credentials:"include";//omit、same-origin
  • 服务端也必须设置响应头请求(表示允许客户端的凭证,否则服务端取不到前台发送的cookie): Access-Control-Allow-Credentials:true

注意

  • cookie不区分端口号,相同doamin不同端口下同一path的cookie有可能被覆盖
  • cookie 有作用域的概念:domain规定主域名、子域名之间cookie的分享,path规定不同目录下的cookie的分享,二者共同绝定了cookie的作用域.
"/index.html" cookie:name=hezebing;path="/"
"/demo/index.html" cookie:sex=female;path="/demo"
"/demo/index.html"可以访问并修改 "/index.html"下的cookie
而"/index.html"无法访问"/demo/index.html"下的cookie
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值