每周分享之cookie详解
本章从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详解的更多相关文章
- cookie详解(含vue-cookie)
今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://mp.weixin.qq.com/s/NXrH7R8y2Dqxs9Ekm0u33w 原文如下,记录到此供以 ...
- cookie详解
一.cookie详解 (1)设置cookie 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie: document.cookie="userId ...
- ASP.NET 操作Cookie详解 增加,修改,删除
ASP.NET 操作Cookie详解 增加,修改,删除 Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它 ...
- iOS 6分享列表——UIActivityViewController详解
iOS 6分享列表——UIActivityViewController详解 2013-06-03 01:42:33 发表评论 在iOS 6之后提供了一个分享列表视图,它通过UIActivity ...
- 网络基础 cookie详解
cookie详解 by:授客 QQ:1033553122 cookie干嘛用的? 参见文章http 会话(session)详解: 网络基础 http 会话(session)详解 cookie分类 ...
- Session和Cookie详解(1)
面试常问的有关session和cookie的问题: 1.session在分布式环境下怎么解决 2.集群下如何保证session踩中 3.cookie的大小 4.服务器怎么识别一个用户的 5.sessi ...
- JavaWeb Cookie详解
代码地址如下:http://www.demodashi.com/demo/12713.html Cookie的由来 首先我们需要介绍一下,在Web开发过程中为什么会引入Cookie.我们知道Http协 ...
- Cookie 详解以及实现一个 cookie 操作库
Cookie 详解以及实现一个 cookie 操作库 cookie 在前端有着大量的应用,但有时我们对它还是一知半解.下面来看看它的一些具体的用法 Set-Cookie 服务器通过设置响应头来设置客户 ...
- [转]Cookie详解
从事 Web 开发已有近17个月:在学以致用的工作学习里,对于不怎么使用的部分,多少有些雾里探花的窘迫感-差不多是了解一二,然而又非真切的明晰:这就使得再用的时候,总要去再搜索一番:如此颇为难受,倒不 ...
随机推荐
- 二、tableau常用难点操作
常用操作: 1.Ctrl+要选的多个字段+“智能显示”选择相应的图形 2.ctrl+m:新建工作表 3.添加行和列时,注意分层结构的利用 3.行的标题颜色的修改: (1)单行:表-右击-阴影-选择相应 ...
- nmap参数原理抓包分析
nmap参数原理抓包分析 实验环境: Nmap7.70 实验步骤: 1.主机发现 2.端口扫描 3.服务版本探测 一.主机发现 主机发现,如果主机活跃,扫描1000个常用的tcp端口 1.Nmap i ...
- 将含有makefile文件的源码加入Eclipse工程
转载自https://www.linuxidc.com/Linux/2011-02/32763.htm 很多软件在开发或者分析时需要一个像样的IDE,Eclipse是其中很优秀的一个,至少个人感觉很好 ...
- 2018-10-18读文献总结之DCB码分多址、零基线、信号产生
---恢复内容开始--- 今天心血来潮,想开始把自己读文献的过程和每篇文献的收获总结一下,不知道CSDN怎么回事,一直登陆不进去,搞得我注册了一个博客园的账户,博客园新注册的还需要认证,但是很快,所以 ...
- 删除window10没用的服务
最近学习了下resin,出了个问题,它默认端口是8080,跟Tomcat冲突了,我在使用的时候遇到了个奇怪的事情,resin4.0一直占用着我的8080端口,哪怕我用dos命令把它强制停止,不出五秒钟 ...
- 英语进阶系列-A01-再别康桥
每天必读知识 音标 发音网页 人称代词与物主代词 时态 朗读50遍词汇系列1 Number word 1 be 2 have 3 get 4 give 5 take 诗歌欣赏 [原诗] [英文版] 再 ...
- 经常在比特币中看到的merkle树是什么?
区块基础-merkle树 Merkle tree中文叫做梅克尔树,这当然不是一棵真正的植物树,merkle tree是计算机数据结构中的一种树,是由计算机科学家 Ralph Merkle 提出的, ...
- UVA1623-Enter The Dragon(并查集)
Problem UVA1623-Enter The Dragon Accept: 108 Submit: 689Time Limit: 3000 mSec Problem Description T ...
- 实战Performance Monitor监测EnyimMemcached
首先要将EnyimMemcached安装至Windows Performance Counters中. 将Enyim.Caching.dll复制到一个文件夹中 在命令行中进入.NET Framewor ...
- PHP消息队列的实现方式与详解,值得一看
队列原理: 也是解耦的原理:业务系统和队列处理系统没有关系 一个写(业务系统),一个读(队列管理系统). 写的只管往队列里写,别的不用操心,读的能不能读完和写的也没有关系 同样,读的只管从队列里往外读 ...