资讯专栏INFORMATION COLUMN

js Cookie

geekidentity / 3038人阅读

摘要:当服务器向浏览器发送页面时,在连接关闭后,服务端不会记录用户的信息。当浏览器从服务器上请求页面时,属于该页面的会被添加到该请求中。指定是否只能通过协议访问,一般的使用协议既可访问,如果设置了没有值,则只有当使用协议连接时才可以被页面访问。

Cookie 是一些数据, 存储于你电脑上的文本文件中。

当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。

Cookie 的作用就是用于解决 "如何记录客户端的用户信息":

当用户访问 web 页面时,他的名字可以记录在 cookie 中。

在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。

当浏览器从服务器上请求 web 页面时, 属于该页面的 cookie 会被添加到该请求中。服务端通过这种方式来获取用户的信息。

总的来说,Cookie是保存在本地的一个字符串数据,浏览器每次访问服务器就会把对应页面的Cookie发送给服务器,这样服务器就能知道你是谁。

查看Cookie的方式:开发者工具(F12) -> Application -> 左侧Storage分组下的Cookies

Cookie的特点

name=value的方式储存(名/值对),并且是明文

默认情况下,cookie的有效期间是当前会话(需要把整个浏览器都关闭会话就结束)

不可以跨浏览器(在IE中保存的cookie, 不可以在火狐中使用)

不可以跨域(跨域名)

每个网页中存储cookie的个数(最多50)和每个网站中存储cookie的个数都有限制(200)

有大小限制(4KB左右)

Cookie的过期时间和数量
浏览器 大小(Byte 字节) 数量(每个域名)
IE6.0 4095 20
IE7.0/8.0 4095 50
Opera 4096 30
Fire Fox 4097 50
Safari 4097 无限制
Chrome 4097 53

在进行页面cookie操作的时候,应该尽量保证cookie个数小于50个(除非兼容IE6),总大小 小于4KB

操作Cookie 设置Cookie:
document.cookie = "username="Evgni0n"";
设置过期时间:

在值的后面添加一个expires字段,并且放一个GMT时间的值(js中放一个date对象就是GMT)。

var date = new Date();
date.setDate( date.getDate() + 7 );   // 7天过期
document.cookie = "username="Evgni0n"; expires=" + date + ";";

在设置Cookie的时候一次性只能设置一个Cookie,不能批量设置,如:document.cookie = "username="Evgni0n"&age=18";这样设置的话,Name字段仍是username,而Value字段则会变成"Evgni0n"&age=18

删除Cookie:

没有提供方法删除Cookie,但是Cookie过期就会被删除,所以只要设置一个过去的时间Cookie就自动会被删除。

var date = new Date();
date.setDate( date.getDate() - 1 );   // 给一个过去的时间
document.cookie = "username="Evgni0n"; expires=" + date + ";";
Cookie有4个属性

expires: 生存周期

path: 一个路径

domain: 子域

secure: 安全性

expires

默认情况下,回话结束就会删除Cookie,但是给这个属性设置了一个时间(GMT格式)之后就会等到这个时间过期才删除Cookie,如document.cookie = "username="Evgni0n"; expires=" + date + ";"

path

默认情况下,在同一个目录下文件可以调用;

http://www.evgni0n.com/page/1.html 设置的Cookie可以被 http://www.evgni0n.com/page/2.html 调用.但不能被 http://hanj.com/article/1.html 目录下的文件调用;

一般设为“/”,以表示同一个站点的所有页面都可以访问这个Cookie。

domain

指定在该子域下才可以访问Cookie,例如要让Cookie在a.test.com下可以访问,但在b.test.com下不能访问,则可将domain设置成a.test.com

例如设成 ".evgni0n.com" 则在 .evgni0n.com 下的所有服务器下的文件都可以调用Cookie。

secure

指定Cookie是否只能通过https协议访问,一般的Cookie使用HTTP协议既可访问,如果设置了Secure(没有值),则只有当使用https协议连接时Cookie才可以被页面访问。

如:document.cookie = "username="Evgni0n"; expires=" + date + ";secure;"

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87223.html

相关文章

  • js-cookie源码学习

    这篇文章最初发表在我自己搭建的站点js-cookie库源码学习 背景 最近在做项目的时候,前端登录功能要做一个记住密码的功能。但开发用的框架中没有实现这个功能,所以我就想自己实现这个功能。实现起来其实很简单,就是每次用户在登录页面点击登录时,把用户输入的用户名和密码保存到cookie中就可以了,当用户再登录时,再从cookie中获取用户名和密码填充到表单中就可以了。当然,也可以选择保存在local...

    JellyBool 评论0 收藏0
  • 温故js系列(3)-cookie优缺点&设置获取删除cookie

    摘要:优缺点优点只在中存放不敏感数据,即使被盗也不会有重大损失。控制的生命期,使之不会永远有效。极高的扩展性和可用性,使用简单,操作方法方便缺点数量和长度的限制。每个长度不能超过,否则会被截掉。设置一般主要设置名字和值有效期路径域名是否安全传输。 前端学习:教程&开发模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试-前端资源汇总 欢迎提issues斧正:cookie J...

    Vultr 评论0 收藏0
  • 聊一聊 cookie

    摘要:如我当前打开的网址为,在控制台中我们执行了下面代码查看浏览器面板如下图所示,确实设置成功了,而且属性选项都用了默认值。 咱们不搞一开始就一大堆理论知识介绍,怕把人讲懵了...... 咱们换一个思维方式——从现象看本质,先说说我们看到了什么,再从看到的现象中提出问题,最后深入寻找答案。 我们看到的 cookie 我自己创建了一个网站,网址为http://ppsc.sankuai.com。...

    entner 评论0 收藏0
  • cookie、Sessionstorage、Localstorage快速上手

    摘要:快速上手先说区别数据大小不能超过。可以在后端设置修改,数据仅在本地浏览器保存。数据存储在浏览器仅在浏览器为关闭的状态,关闭窗口后数据就会销毁。默认情况下,属于当前页面。 cookie、Sessionstorage、Localstorage快速上手 先说区别 cookie: 数据大小不能超过4KB。 不管是否有需求,cookie数据都会在HTTP请求中携带,在浏览器和服务器中来回传递,...

    duan199226 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<