cookie & maxAge & expires
cookie & maxAge & expires
Expires (timestamp) & Max-Age (seconds)

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
cookie demo
create & delete
https://codepen.io/webgeeker/full/vaQRqe/
setTimeout(() => {
    let btn = document.querySelector(`[data-link="logout"]`);
    btn.addEventListener(`click`, function (e) {
        // clear cookie
        document.cookie = "access_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
        setTimeout(() => {
            window.parent.location.replace(`http://10.1.5.202/auto-deploy-platform/login/index.html`);
        }, 0);
    });
}, 1000);
// obj = {key: "", value: "", timestamp: 36*Math.pow(10, 6)};// one day & ms
// {key: "", value: "", timestamp: 36000000}
/*
new Date(new Date().getTime() + 36000*1000).toUTCString();
"Thu, 09 Aug 2018 13:44:09 GMT"
new Date().toUTCString();
"Thu, 09 Aug 2018 03:44:15 GMT"
*/
let ga = {
    key: "_ga",
    value: "GA1.2.156580446.1505450776",
    timestamp: 36*Math.pow(10, 6)
};
// one day & ms
const setCookie = (obj = {key: "", value: "", timestamp: 36000*1000}, debug = false) => {
    let {
        key,
        value,
        timestamp
    } = obj;
    let host = window.parent.location.origin;
    if(key && value) {
        // let expires = new Date().toUTCString();
        let expires = new Date(new Date().getTime() + 36000*1000).toUTCString();
        let domain = host.includes(`https`) ? host.slice(8) : host.slice(7);
        document.cookie = `${key}=${value}; expires=${expires}; path=/; domain=${domain};`;
    }
};
setCookie(ga);
const deleteCookie = (key = ``, debug = false) => {
    let host = window.parent.location.origin;
    if(key) {
        let expires = new Date("1969-01-01").toUTCString();
        let domain = host.includes(`https`) ? host.slice(8) : host.slice(7);
        document.cookie = `${key}=; expires=${expires}; path=/; domain=${domain};`;
    }
};
deleteCookie(ga.key);
setMaxAge
Setting
setMaxAgeto0will delete the cookie.
Setting
setMaxAgeto-1will preserve it until the browser is closed.
CORS & cookie
https://www.cnblogs.com/xgqfrms/p/9198180.html
cookie & maxAge & expires的更多相关文章
- cookie的expires属性和max-age属性
		
expires属性 指 定了coolie的生存期,默认情况下coolie是暂时存在的,他们存储的值只在浏览器会话期间存在,当用户推出浏览器后这些值也会丢失,如果想让 cookie存在一段时间,就要为e ...
 - 浏览器缓存之Expires Etag Last-Modified max-age详解
		
前段时间去面试移动端的H5开发工程师,在最后面试的时候被问到了max-age Expires Etag有什么不同,在什么情况下应用,当时乱编了一通,自我感觉良好,结果…… 大家懂得,现在讲他们几个的区 ...
 - Js添加、读取、删除cookie,判断cookie是否有效,指定domain域下主路径path下设置cookie,设置expires过期时间
		
有时我们需要用cookie保存用户名,记录登录状态,如何正确判断该机用户cookie是否存在呢?不能简单使用a!=”这样的写法. 正确方法是:判断是否存在名为username3的cookie,使用do ...
 - tornado设置cookie过期时间(expires time)
		
具体的tornado设置过期时间的东西, 我也是查资料才发现的, 现在就贴代码吧 用户登录之后, 设置cookie, 我使用set_secure_cookie的, 它默认是有个30天的过期时间, 导致 ...
 - 好好了解一下Cookie
		
Cookie的诞生 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新 ...
 - 让tomcat支持中文cookie
		
这的确是一个不正常的需求,按照规范,开发者需要将cookie进行编码,因为tomcat不支持中文cookie. 但有时候,你不得不面对这样的情况,比如请求是由他人开发的软件,比如,浏览器控件发出的. ...
 - cookie属性详解
		
在chrome控制台中的resources选项卡中可以看到cookie的信息. 一个域名下面可能存在着很多个cookie对象. name字段为一个cookie的名称. value字段为一个cookie ...
 - js读写Cookie问题(Cookie存储时长、Cookie存储域)汇总
		
在采集网站用户行为数据/使用js对用户行为做交互时,经常会使用到Cookie,了解Js Cookie的读写,以及一些细节,非常重要. 什么是Cookie 所谓Cookie,只是一条极为短小的信息, ...
 - jquery中的cookie操作
		
使用前在页面中引入下面的代码 /*! * jQuery Cookie Plugin v1.4.1 * https://github.com/carhartl/jquery-cookie * * Cop ...
 
随机推荐
- Java实现QQ邮件发送客户端
			
目录 一.前言:QQ邮件发送程序 二.封装SMTP操作 三.实现多线程接收 四.QQ邮件客户端界面设计 1.连接按钮 2.发送按钮 五.QQ邮件发送效果演示 六.总结 一.前言:QQ邮件发送程序 在上 ...
 - OPTIONS的预请求(Preflighted Request)
			
OPTIONS的预请求(Preflighted Request) Ajax 请求中出现OPTIONS(Request Method: OPTIONS)_qiao-CSDN博客 https://blog ...
 - (Oracle)预定义异常
			
预定义异常: 为了 Oracle 开发和维护的方便,在 Oracle 异常中,为常见的异常码定义了对应的异常名称,称为预定义异常,常见的预定义异常有: 异常名称 异常码 描述 DUP_VAL_ON_I ...
 - TCP随笔
			
目录 前言 正文 time_wait和rst fin与连接关闭 nagel和ack延迟算法 滑动窗口与拥塞控制 文末 总结 测试代码 前言 网上已经有大量关于tcp的文章,感觉作为一名技术人员,不写一 ...
 - [一天一个进阶系列] - MyBatis基础篇
			
前言:一直以来,很多人都是拿来主义,只停留在会使用的阶段,从未去研究挖掘其原理,剖析本质.现在慢慢探讨一下其内幕,抛砖引玉 一.简介 1)常用的持久化框架 Hibernate:是一款Java世界中最著 ...
 - Jenkins部署静态资源文件
			
Jenkins部署静态资源文件 1.Jenkins部署静态资源文件 1.1 设置项目名称.参数(环境.分支)等 1.2 配置源码管理 1.3 配置构建参数 2.项目实战demo 2.1 demo1 部 ...
 - java  HashMap and HashMultimap 区别
			
http://stackoverflow.com/questions/19222029/what-is-difference-between-hashmap-and-hashmultimap The ...
 - Linux系统对文件及目录的权限管理(chmod、chown)
			
本文命令: 4 5 6 ls -l chmod chown 1.身份介绍 在linux系统中,对文件或目录来说访问者的身份有三种: ①.属主用户,拥有者(owner)文件的创建者 ②.属组用户,和文件 ...
 - CyclicBarrier---可重用的循环栅栏
			
很多文章只是提了下可重用,具体这个栅栏怎么可重用的,很多没有说明,这里会解开你的疑惑. CyclicBarrier是一个同步工具类,它允许一组线程互相等待,直到达到某个公共屏障点.与CountDown ...
 - 【xml】控件常用属性
			
https://www.cnblogs.com/xqz0618/p/textview.html (常用,生动) https://www.jianshu.com/p/992324336dd9 (全,简洁 ...