cookie的理解

学习了一下cookie,这里做下个人分享。
cookie是一种存储机制,主要是web服务器开发人员设置的,前端开发人员较少使用cookie,使用情况比如后端返回的token没有放在cookie中,前端想要放在cookie中时即可使用。好处是cookie有失效时间,也就是在失效之前都是可以获取到的。
后端设置(主要是测试使用,真正使用时会在中间件中处理,比如jwt)

const Koa  = require('koa');
const app = new Koa();
 
app.use(async(ctx)=>{
    if(ctx.url=== '/'){
        ctx.cookies.set(
            'token','sign334kkkcjd_09_oiir',{
                domain:'127.0.0.1',
                path:'/',
                maxAge:1000*60*60*24,
                // expires:new Date('2019-5-13'),
                httpOnly:false,
                overwrite:false
            }
        );
        ctx.body = 'cookie is ok';
    }else{
        if( ctx.cookies.get('token')){
            ctx.body = ctx.cookies.get('token');
        }else{
            ctx.body = 'Cookie is none';
        }
      
    }
});

app.listen(3001,()=>{
    console.log('server is starting at port 3001');
});

通过浏览器访问接口可以发现cookie设置在了headers中,同时可以在cookie中查看。
cookie的理解_第1张图片
cookie的理解_第2张图片
我们换个路径测试cookie的理解_第3张图片
cookie被携带了进了请求头的headers。

使用postman测试
cookie的理解_第4张图片
可以看出跟浏览器测试是一致的。

前端设置时使用js-cookie等即可。

这里做个解释
domain设置域,path设置目录,目录以下的可以获取到cookie,例如 [path:’/a’],使用’http://127.0.0.1:3001/a’或者’http://127.0.0.1:3001/a/b’都可以在headers自动传递cookie,但如果使用’http://127.0.0.1:3001/c’则不会有cookie,因为获取不到。 ‘expires:new Date(‘2019-5-13’)’,设置过期时间,如果设置的时是当前时间之前,那么cookie不会正常写入,因为已经失效。如果同时设置了maxAge, 则expires无效,maxAge表示以当前时间为基准,往后顺延的有效时间。

你可能感兴趣的:(js)