浏览器设置cookie(浏览器设置cookie过期时间)

浏览器设置cookie(浏览器设置cookie过期时间)

1. 浏览器设置cookie过期时间

之前项目有一个需求,在下载文件的时候,在向后端发出请求的这段时间要有loading动画提高交互性。

但是当时后端只能以传统的向前端发送流的形式来下载,ajax派不上用场,只能用js去模拟,但是这样就监听不到后端的返回,只能等后端将数据流发送回来,浏览器自动弹出下载提示。

想了想,只能是后端返回的时候发送一个cookie: {downloading: true},然后我前端轮询这个字段,轮询到就将loading关闭,并将这个cookie删除。理论上来说好像是没什么毛病,但实际应用起来还是有一些坑的。

踩坑完毕,记录一下。

首先遇到的第一个坑就是发现cookie删不掉。

当然,这里说明一下,并不是js或者浏览器本身的机制不允许删除cookie,只是我删除的方式不对。

一开始我只是简单的将cookie设置为空,将expires设置为-1。心里想着,已过期,cookie自动清除,美滋滋,然而事实并没有按照我想的发生。downloading还是躺在cookie里面没有任何变化,是因为没有刷新吗?于是我在后面再次获取了一下:

console.log(document.cookie);

发现cookie里面确实还是有downloading这个字段。

没办法,打开application看看,果然发现了问题,后端传递过来的这个cookie没有设置expires,但是却默认设置了path,再联想我之前删除的cookie是没有带任何参数的,结合cookie的机制,发现了问题所在。

解决办法:

在删除cookie的时候要加上这个字段所带的参数,可能是出于安全的考虑,不同的参数,即使名字相同,也会当成两个cookie存储,所以我删除的并不是后端传过来的cookie,自然就删除不了。

第二个坑,后端设置cookie默认的path属性没有规律。

出于代码复用和性能考虑,后端的很多功能都会集成到一个API,再加上前端可能会用到一些第三方的框架,这些框架所采用过的设计模式都各不相同,都会造成一些不可预测的结果,而项目有可能在任何地方都会有下载的需求,所以当我发现如何删除cookie的时候,我又发现了一个坑,那就是不知道该如何准确获取cookie的path属性。而且如果你请求的接口默认path与你所在的url不匹配的话,浏览器将会忽略这次的cookie设置,在我的项目的直接体现就是,后端响应了cookie,但是我前端接收不到,页面loading无法消失,卡死了。

解决办法:

根据cookie的机制,当cookie的path属性为'/'的时候,cookie就不会被忽略。

所以解决办法就是让后端在set-cookie的时候讲path设置成固定的'/',以java为例:

Cookie cookie = new Cookie("Downloading","true");

cookie.setPath("/");

response.addCookie(cookie);

然后前端只要在监听到downloading字段的时候,再将path='/'的downloading删除就可以了。 

2. cookie不设置有效期多久过期

京东领货码没有激活前会过期吗?

京东领货码没有激活前会过期吗?

京东领货码使用有效期自激活之日起12个月,可在有效期内多次使用;逾期尚有余额的领货码可提供延期服务,每张领货码仅限一次且延长时限为1个月。有闲置领货券可以去闲卡网寄售变现。

3. 浏览器cookie保存时间

cookie的功能:1、Cookie是保存在客户端的纯文本文件;

2、Cookie文件必须由浏览器的支持,在浏览器中可以设置阻止cookie。

Cookie是保存在客户端的纯文本文件。比如txt文件。所谓的客户端就是我们自己的本地电脑。

当我们使用自己的电脑通过浏览器进行访问网页的时候,服务器就会生成一个证书并返回给我的浏览器并写入我们的本地电脑。这个证书就是cookie。一般来说cookie都是服务器端写入客户端的纯文本文件

4. 如果在使用cookie时不设置cookie的过期时间会怎样

关于两者的一些区别,根据自己的理解和网络技术人员的分享,回答如此。

1、存储位置不同

cookie的数据信息存放在客户端浏览器上。

session的数据信息存放在服务器上。

2、存储容量不同

单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie。

对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制。

3、存储方式不同

cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据。

session中能够存储任何类型的数据,包括且不限于string,integer,list,map等。

4、隐私策略不同

cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的。

session存储在服务器上,对客户端是透明对,不存在敏感信息泄漏的风险。

5、有效期上不同

开发可以通过设置cookie的属性,达到使cookie长期有效的效果。

session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。

6、服务器压力不同

cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择。

session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。

7、浏览器支持不同

假如客户端浏览器不支持cookie:

cookie是需要客户端浏览器支持的,假如客户端禁用了cookie,或者不支持cookie,则会话跟踪会失效。关于WAP上的应用,常规的cookie就派不上用场了。

运用session需要使用URL地址重写的方式。一切用到session程序的URL都要进行URL地址重写,否则session会话跟踪还会失效。

假如客户端支持cookie:

cookie既能够设为本浏览器窗口以及子窗口内有效,也能够设为一切窗口内有效。

session只能在本窗口以及子窗口内有效。

8、跨域支持上不同

cookie支持跨域名访问。

session不支持跨域名访问

5. cookie什么时候过期

总结以下几点供参考:

1.存储大小区别:浏览器中cookie单条储存大小限制4kb左右,localStorage一般5M左右(各浏览器间略有区别);

2.有效期区别:cookie只在有效期内存在,过期即删除,localStorage无有效时期时间限制,不主动删除可一直有效;

3.兼容性区别:localStorage在IE8以上才支持,IE8以下也可以使用cookie,相对来说cookie兼容性好些;

4.能否被爬虫爬取到区别:localStorage不能被爬虫爬取到,cookie可以;

5.是否可通过服务端设置的区别:localStorage的值只能通过前端设置,cookie前后端都可以设置;

6.是否默认随请求发送到服务端的区别:localStorage中的值默认不跟随请求发送至服务端,cookie中的值默认跟随请求发送;

6. 如何设置cookie的过期时间

会话cookie一般不存储在硬盘而是保存在内存里,当然这个行为并不是规范规定的。

若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再打开浏览器这些cookie仍然有效直到超过设定的过期时间。

设置过期时间失效(只要设置了过期时间cookie就会存储在硬盘里面),当会话结束时失效,即关闭浏览器窗口(如果没有设置Expires。

7. cookie一般设置多久过期时间

cookie 的过期时间是人为指定的;可用 计算出剩余时间,php 只能通过附加辅助 cookie 变量简洁获取。session 过期时间为 0,不需要考虑。cookie一般分两种。

1.不设置过期时间,会存在内存里,浏览器关闭即失效。

2.设置过期时间,会存在硬盘里,一直到过期时间才失效。

8. 微信浏览器 cookie过期时间

1、首先判断自己的微信账号是否被封号、或是被微信官方冻结,其次就是保障密码的正确性,以及保障手机能够收到微信发来的验证码!

微信等不上,可能是网络的原因,网络不给力的时候,微信就会一直停留在微信登录页面。

2、如果微信并不是最新版本、或者没有通过官方途径下载,可以通过微信官方网站重新下载,在尝试登录。

3、该微信长时间没登陆,出于安全考虑,系统把账号注销了,重新登录即可。

4、微信最近不太稳定,微信多次不在一个地方(城市)登陆或者出现其他恶意情况,比如大量的用恶意软件盗号等,微信就会用这个方式限制,主要是针对恶意木马盗号。

5、刚改过密码,手机自动登录发现密码不对,就会出现这种情况,重新输入密码登陆即可。

6、假如以上的方法都使用之后,微信依然不能登录,可以选择卸载微信软件,重新安装,这样一般的微信故障都可以解决,这种方法简单粗暴,有效!

9. js-cookie设置过期时间

(1)cookie的有效期:

  默认:会话周期结束(就是浏览器关闭),默认情况下,cookie会在浏览器关闭时失效,这种cookie是 临时cookie或者叫会话。

  支持设置有效期,setcookie的第三个参数,可以对cookie的有效期进行设置,有效期采用一个时间戳来表示。(下面的这个就是设置了60秒,但是一分钟后不管浏览器是否关闭,这个cookie就失效)

10. 设置cookie的过期时间

cookie存在时间一般会保存在响应头中,可获取响应头在进一步获取到有效期

推荐阅读