1. 什么是Cookie?

  1. 服务器通过 Set-Cookie 头给客户端一串字符串
  2. 客户端每次访问相同域名的网页时,必须带上这段字符串
  3. 客户端要在一段时间内保存这个Cookie
  4. Cookie 默认在用户关闭页面后就失效,后台代码可以任意设置 Cookie 的过期时间
  5. 大小大概在 4kb 以内

2. cookie的设置获取和删除

cookie是运行在客户端的,可以用JS来设置cookie.
首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

  • JS设置cookie:
document.cookie="name="+username;
  • JS读取cookie:
 var getCookie = function (name) {
var arr;
var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
if (arr = document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
};
  • JS删除cookie:
var delCookie = function (name) {
setCookie(name, ' ', -1);
};

3. cookie的主要作用:

  • 会话状态管理(如用户登录状态、购物车、游戏分数和其它需要记录的信息)
  • 个性化设置(如用户自定义设置、主题等)
  • 浏览器行为跟踪(如跟踪分析用户行为)

4. cookie设置语法:

document.cookie = "cookieName=mader; expires=Fri, 31 Dec 2017 15:59:59 GMT;
path=/mydir; domain=cnblogs.com; max-age=3600; secure=true";
  • cookieName=mader :name=value,cookie的名称和值
  • expires=Fri, 31 Dec 2017 15:59:59 GMT: expires,cookie过期的日期,如果没有定义,cookie会在对话结束时过期。日期格式为 new Date().toUTCString()
  • path=/mydir: path=path (例如 '/', '/mydir') 如果没有定义,默认为当前文档位置的路径。
  • domain=cnblogs.com: 指定域 (包括所有子域名)
  • max-age=3600: 文档被查看后cookie过期时间,单位为秒
  • secure=true: cookie只会被https传输 ,即加密的https链接传输

5. 相关问题:

我在 Chrome 登录了得到 Cookie,用 Safari 访问,Safari 会带上 Cookie 吗?
不会,因为浏览器会带上域名Cookie, Cookie 还可以根据路径做限制

Cookie 存在哪?
Windows 存在 C 盘的一个文件里

Cookie会被用户篡改吗?
可以,可以用Session 来解决这个问题,防止用户篡改

Cookie 有效期吗?
默认有效期20分钟左右,不同浏览器策略不同
后端可以强制设置有效期,具体语法看 MDN

Cookie 遵守同源策略吗?
也有,不过跟 AJAX 的同源策略稍微有些不同。
当请求 qq.com 下的资源时,浏览器会默认带上 qq.com 对应的 Cookie,不会带上 baidu.com 对应的 Cookie
当请求 v.qq.com 下的资源时,浏览器不仅会带上 v.qq.com 的Cookie,还会带上 qq.com 的 Cookie

最新文章

  1. Linux内核设计第四周——扒开系统调用三层皮
  2. 转!!Java JTable 根据表格内容 自动调整表格列宽
  3. discuz 模拟批量上传附件发帖
  4. mysql查找重复
  5. java.util.concurrent.Exchanger应用范例与原理浅析--转载
  6. javascript闭包的理解
  7. c语言"a<b<c"条件值的判定
  8. NSLayoutConstraint-代码实现自己主动布局的函数使用方法说明
  9. 如何应对“改变现状”的失败"
  10. Hibernate之通过hibernate.cfg.xml配置文件访问数据库的例子
  11. nginx 设置进程title
  12. mybatis逆向工程使用步骤详解
  13. java实现微信支付之扫码支付
  14. python之旅十【第十篇】paramiko模块
  15. cocos2dx开发之util类&方法——取范围随机数
  16. 关于微信JS SDK接口wx.previewImage预览接口的使用
  17. 当Jaxb遇到泛型
  18. shell变量常用方法
  19. url的命名与反向解析
  20. git —— 远程仓库(操作)

热门文章

  1. vue+element ctrl+s保存写法
  2. SpringBoot系列:六、集成Swagger文档
  3. 转:http协议学习系列(响应头---Response Headers)
  4. PyQt(Python+Qt)学习随笔:Qt中的部分类型QString、QList和指针、引用在PyQt中的实现方式
  5. [Windows] Prism 8.0 入门(下):Prism.Wpf 和 Prism.Unity
  6. java后端开发学习路线
  7. CSS基础-Flexbox
  8. 四、Zookeeper伪集群搭建
  9. 云服务器 ECS Linux 安装 VNC Server 实现图形化访问配置说明
  10. Docker 安装 Redis 需要注意的地方