为了账号安全,请及时绑定邮箱和手机立即绑定

请问我为什么删除不了COOKIE?

请问我为什么删除不了COOKIE?

PHP
拉丁的传说 2019-09-20 15:15:03
为什么删除不了COOKIE
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

cookie(储存在用户本地终端上的数据)
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。
服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。:
:1:设置cookie

最简单的就是:document.cookie="user=aa"。
但是这样就没有过期时间了,只是暂存于电脑内存里没有保存下来,几天后无法显示cookie内容。下面开始正式写规范完整的函数。
代码如下:
function setCookie(name, value, iDay){
/* iDay 表示过期时间
cookie中 = 号表示添加,不是赋值 */
var oDate=new Date();
oDate.setDate(oDate.getDate()+iDay);
document.cookie=name+'='+value+';expires='+oDate;
}
JavaScript中Date对象的setDate方法用于设置一个月的某一天,而getDate获得当前的日期,由此可以按照保存为多少天就在当前(getDate)日期加多少天。
2:获取cookie

前面分析的时候我们讲过浏览器cookie是由像:user=aa; pwd=123;等等组成的,所有要想获取cookie关键还是字符串和数组的操作。
代码如下:
function getCookie(name){
/* 获取浏览器所有cookie将其拆分成数组 */
var arr=document.cookie.split('; ');

for(var i=0;i<arr.length;i++) {
/* 将cookie名称和值拆分进行判断 */
var arr2=arr[i].split('=');
if(arr2[0]==name){
return arr2[1];
}
}
return '';
}
3:删除cookie

删除cookie的思想很简单,就是将cookie的过期时间设置为过期(-1),已经过了一天。那么就能实现了,当然了需要调用设置cookie的函数setCookie。
代码如下:
function removeCookie(name){
/* -1 天后过期即删除 */
setCookie(name, 1, -1);
}

4:删除所有cookie

function clearCookie(){
var keys=document.cookie.match(/[^ =;]+(?=\=)/g);
if (keys) {
for (var i = keys.length; i--;)
document.cookie=keys[i]+'=0;expires=' + new Date( 0).toUTCString()
}
}




查看完整回答
反对 回复 2019-09-22
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

前两天看见有兄弟问cookie为什么删除不了,所以写了给小总结,希望对用cookie的各位兄弟有帮助
对于cookie,最主要的当然是读取和设置了,下面分两方面说明.
一、设置
Cookie是通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头中的
例如:
Cookie userCookie = new Cookie("user", "admin");
response.addCookie(userCookie);
和设置有关系的还有以下两个重要方法
1.setMaxAge
设置Cookie过期之前的时间,以秒计。如果不设置该值,则Cookie只在当前会话内有效,而且这些Cookie不会保存到磁盘上。
注意:删除cookie就是通过该方法实现的。将要删除的cookie的过期之前的时间指定为0就可以达到删除该cookie的目的。
2.setPath
设置Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面(JSP页面或者Servlet的映射)所在目录及其子目录下的所有页面。
注意:
A:所有的cookie都是有路径的
B:该方法设置的路径为客户端路径,即“/”代表服务器根目录,而不是WEB应用根目录
C:该方法设置路径时,“/myWeb/”与“/myWeb”是不同的,要特别注意;前者可以关联到服务器的myWeb目录下,而或者则不可以。
D:该方法设置路径时,没有相对目录可言,即不论在哪个目录下设置setPath(“/myWeb/”),该cookie都将关联到服务器的myWeb目录下(setPath(“/myWeb”)则不可以),而不是当前目录的myWeb的子目录下;同样,设置setPath(“myWeb/”)和setPath(“myWeb”)也不能关联到当前目录的myWeb的子目录下
这里有个奇怪的例子,就是在一个web应用下设置的cookie可以在另一个web应用下获得(两个web应用在同一个服务器下)
目录结构:在服务器根目录上有web1和web2两个目录,在web1下有setcookie.jsp和getcookie.jsp、在web2下有getcookie.jsp
web1下的setcookie.jsp

web1下的getcookie.jsp

web2下的getcookie.jsp

先访问web1下的setcookie.jsp,然后分别访问web1和web2下面的getcookie.jsp文件,你会发现奇怪的现象,web1下的getcookie.jsp中user为空而web2下的getcookie.jsp中user却有值,这就实现了从一个web应用下设置的cookie在另一个web应用下获得。
大多数人删除cookie不成功都是因为目录原因。一个典型的原因是在某一个目录中设置了cookie(没有调用setPath方法)却在另一个目录中删除该cookie(其实是调用setMaxAge方法)

二、读取
从客户端读取Cookie时调用的是HttpServletRequest的getCookies方法。该方法返回一个与HTTP请求头中的内容对应的Cookie对象数组。得到这个数组之后,一般是用循环访问其中的各个元素,调用getName检查各个Cookie的名字,直至找到目标Cookie。然后对这个目标Cookie调用getValue,根据获得的结果进行其他处理。
注意:若JSP和Servlet所在目录(Servlet为其映射目录)的父目录中有同名cookie,则request.getCookie()方法得到的Cookie数组中保存的是其父目录中的cookie的信息;



查看完整回答
反对 回复 2019-09-22
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

右键点击浏览器的那个图标——属性——在Internet临时文件中找到设置——单击设置——查看文件——出现所有COOKIES——全部删除——问题解决
卡卡:
貌似是常用里的“电脑使用痕迹清理”全选然后清理即可
傲天防毒墙助手:
安全漏洞扫描——扫描出两个COOKIES文件——清除即可

查看完整回答
反对 回复 2019-09-22
  • 3 回答
  • 0 关注
  • 340 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信