本章从JS方向讲解cookie的使用。(实质上后端代码也是差不多用法,无非读取和设置两块)

    基本用法:document.cookie="username=pengpeng"; 修改的时候也是这句,重新赋值即可。

    一般的,cookie是记域名的,上面的写法,比如在www.test.com域名下生效,但是不会在www.test.com/p123.html下生效,因为默认的cookie是不跨URL子目录的,就是说cookie只记录在当前url下,首页的cookie是首页的,列表页是列表页的,哪怕cookie名称都叫username,它们也互不影响。

    实际项目中我们肯定是不允许这种情况存在的,首页和列表页以及终端页等页面的cookie必须共享,这个时候就需要设置一下path, 写法:document.cookie="username=pengpeng;path=/"; 这个时候同一域名下的cookie共享,一般不会存在首页设置的cookie在其他页获取不到。

    但也有特例,最近公司项目里就遇到了,问题出在一些叫个人中心以及帮助中心的页面,域名变了,准确的来说,二级域名变了 原本是www.test.com的,个人中心的域名是account.test.com,这个时候设置了path也没用, 此时已跨域,而cookie默认不跨域,是的,既然我说默认了,那肯定是有解决方案了,那就是domain属性!

    写法:document.cookie="username=pengpeng;path=/;domain=test.com";

    注意,domain后面写的是主域.com,只有这个时候浏览器里的cookie才是跨子域的!(但实际上主域是没法跨域的,最多跨子域,也就是最多实现二级域名、三级域名的cookie共享)。

    最近被这个坑的不轻,在公司丢人了,当时和公司产品说cookie不能跨域,差点改了需求,虽然是小改,虽然她们好像也不知道我的这个尴尬事,不过还是挺醉的(*/ω\*)

    用法基本就是上面提到的几点了,注意事项也提到了,主要是path和domain的设置注意一下就行。关于为什么用cookie,主要是方便,因为这东西是记录在浏览器里的,很多的用户行为能直接存储在用户的这边(顺便提一下,用户的数据如果全都存服务端,会给服务器带来巨大压力,特别是用户量大的时候,所以这也是cookie的一个好处,减轻服务器压力),不过总的来说,cookie只适合做少量存储,或者临时性存储,毕竟浏览器是可以清理缓存和cookie的。

    既然提到客户端和服务端的概念,所以也可以引深一下别的概念,cookie的好处在于客户端存储,减轻服务端压力,但是有时候我们的一些数据(非用户数据相关的或者是一些共享信息),我们希望大家都用,那么这个时候就不能存在客户端了,不然你的我用不了,我的你用不了,所以session的好处就体现出来了,这也是我要引深的一个地方,session是存储在服务端的,所以能实现信息的共享或者完成和服务器的一些信息交互。

    cookie和session都是少量信息的存储,一个存在客户端,一个存在服务端,根据各自的场景使用即可。(前端方向一般cookie使用比较多,session很少,使用cookie需要注意一点,总大小,4KB!!)

    

     除了session需要了解一下以外,application也可以了解一下,为了省事找了一张图,很详细的对比了:

      

     嗯,以上已经很详细说明了各个存值的场景和区别,不同情况的会分别去使用,application基本上我没见过,很少有人用,客户端cookie,服务端session、cache,webconfig一般后端在程序里灵活配置的时候会用到。对了,JS浏览器存储,除了cookie,还有一个叫本地存储的黑科技,这个可比cookie存的东西多多了,相当于一个小数据库,一个小的前端数据库,可以存很多东西,学名Local Storage,这个用起来也挺简单,就不赘述了,了解一下就行~~

     以上内容如果疑问欢迎指出,有兴趣的道友也可以一起讨论,一起学习一起进步!

每周分享之cookie详解的更多相关文章

  1. cookie详解(含vue-cookie)

    今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://mp.weixin.qq.com/s/NXrH7R8y2Dqxs9Ekm0u33w 原文如下,记录到此供以 ...

  2. cookie详解

    一.cookie详解 (1)设置cookie 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie: document.cookie="userId ...

  3. ASP.NET 操作Cookie详解 增加,修改,删除

    ASP.NET 操作Cookie详解 增加,修改,删除 Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它 ...

  4. iOS 6分享列表——UIActivityViewController详解

    iOS 6分享列表——UIActivityViewController详解 2013-06-03 01:42:33     发表评论 在iOS 6之后提供了一个分享列表视图,它通过UIActivity ...

  5. 网络基础 cookie详解

    cookie详解 by:授客 QQ:1033553122 cookie干嘛用的? 参见文章http 会话(session)详解: 网络基础 http 会话(session)详解   cookie分类 ...

  6. Session和Cookie详解(1)

    面试常问的有关session和cookie的问题: 1.session在分布式环境下怎么解决 2.集群下如何保证session踩中 3.cookie的大小 4.服务器怎么识别一个用户的 5.sessi ...

  7. JavaWeb Cookie详解

    代码地址如下:http://www.demodashi.com/demo/12713.html Cookie的由来 首先我们需要介绍一下,在Web开发过程中为什么会引入Cookie.我们知道Http协 ...

  8. Cookie 详解以及实现一个 cookie 操作库

    Cookie 详解以及实现一个 cookie 操作库 cookie 在前端有着大量的应用,但有时我们对它还是一知半解.下面来看看它的一些具体的用法 Set-Cookie 服务器通过设置响应头来设置客户 ...

  9. [转]Cookie详解

    从事 Web 开发已有近17个月:在学以致用的工作学习里,对于不怎么使用的部分,多少有些雾里探花的窘迫感-差不多是了解一二,然而又非真切的明晰:这就使得再用的时候,总要去再搜索一番:如此颇为难受,倒不 ...

随机推荐

  1. UGUI ScrollRect 滑动

    运行环境 Unity3D 5.3.7 p4 在我之前的博客中,写过一些Unity4.6的UGUI,现这篇是基于Unity 5.3的 推荐结构 推荐使用三层来组织,如下所示: ScrollRect :S ...

  2. SMB协议利用之ms17-010-永恒之蓝漏洞抓包分析SMB协议

    SMB协议利用之ms17-010-永恒之蓝漏洞抓包分析SMB协议 实验环境: Kali msf以及wireshark Win7开启网络共享(SMB协议) 实验步骤: 1.查看本机数据库是否开启,发现数 ...

  3. python 协程、I/O模型

    一.引子 (超哥协程) 并发本质:保存状态+切换 cpu正在运行一个任务,转而执行另一个任务的情概况:1.是该任务发生了阻塞:2.该任务计算的时间过长或有一个优先级更高的程序替代了它. 协程本质上就是 ...

  4. 「AHOI / HNOI2017」影魔

    「AHOI / HNOI2017」影魔 题目描述 解决这类比较复杂的区间贡献问题关键在于找到计算的对象. 比如这道题,我们计算的对象就是区间中间的最大值. 对于点\(i\),我们找到左边第一个比他大的 ...

  5. 看Linux 之父是如何定义 Linux?

    看Linux 之父是如何定义 Linux? LINUX是什么? LINUX是一个免费类unix内核,适用于386-AT计算机,附带完整源代码.主要让黑客.计算机科学学生使用,学习和享受.它大部分用C编 ...

  6. foreach 與 reference 的雷

    前陣子公司定期技術研討會時,有人提出了一個問題. $arr = [1, 2, 3]; foreach ($arr as &$a) {} foreach ($arr as $a) {} var_ ...

  7. 路由器安装Openwrt&&***

    路由器安装Openwrt&&*** 前言 对于给路由器刷系统,肯定是有风险的,敢于承担风险的才开始动手. Openwrt其实也是一款嵌入式Linux系统,对于闪存大小也是有一定的要求的 ...

  8. 【转】idea 2018注册码(激活码)永久性的

    百度的,上一个没用多久就挂了,这次用http://idea.toocruel.net 激活方式:License Server1.将地址 http://active.chinapyg.com/ 或者 h ...

  9. sql注入的防护

    一.严格的数据类型 在Java,C#等高级语言中,几乎不存在数字类型注入,而对于PHP,ASP等弱类型语言,就存在了危险. 防御数字型注入相对简单,如果不需要输入字符型数据,则可以用is_numeri ...

  10. 【P1941】 飞扬的小鸟

    题目描述 游戏界面是一个长为 nn,高为 mm 的二维平面,其中有 kk 个管道(忽略管道的宽度). 小鸟始终在游戏界面内移动.小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成 ...