每周分享之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个月:在学以致用的工作学习里,对于不怎么使用的部分,多少有些雾里探花的窘迫感-差不多是了解一二,然而又非真切的明晰:这就使得再用的时候,总要去再搜索一番:如此颇为难受,倒不 ...
随机推荐
- Win10 C盘桌面文件右上方的两个蓝色箭头解决方案
之前看网上有很多桌面蓝色箭头的解决方案,也进行了一些尝试 可是每次Win10系统更新之后蓝色箭头就会重新显示. 最终方案:将建立在桌面的C盘文件移到D盘,桌面创建对应的快捷方式. 一劳永逸,暴力破解.
- update layer tree导致页面卡顿
前因 今天检查一个vue页面问题,就是在切换Tab时候(某些win10电脑),页面会卡顿一段很长的时间,短则3秒,长则十几秒,这个体验非常糟糕,于是我着手寻找其中原因. 概况 这个vue页面的元素非常 ...
- 本地项目上传到CODING
1.在Coding上添加项目 1).新建项目 README:一般项目中都会添加一个README文件对项目进行概述,以便一目了然地知道这个项目是做什么用的,如何使用等信息.README文件采用markd ...
- 2883 -- 【TJOI2018】游园会
Description 小豆参加了\(NOI\)的游园会,会场上每完成一个项目就会获得一个奖章,奖章只会是\(N,O,I\)的字样.在会场.上他收集到了\(K\)个奖章组成的串.兑奖规则是奖章串和兑奖 ...
- B树索引分裂
一.索引分裂 1. 什么是分裂 在开始介绍之前,我们先来搞清楚什么是索引分裂吧.“索引分裂”就是索引块的分裂,当一次DML事务操作修改了索引块上的数据,但是旧有的索引块没有足够的空间来容纳新修改的数 ...
- 利用碎片化时间Get Linux系统
利用碎片化时间Get Linux系统 起初,我做着一份与IT毫无关系的工作,每月领着可怜的工资,一直想改变现状,但无从下手,也就是大家熟知的迷茫.我相信,每一个人都会或多或少的经历过迷茫,迷茫每一个选 ...
- python六十六课——单元测试(二)
''' 封装Person类 ''' class Person: def __init__(self,name,age): self.name=name self.age=age def getAge( ...
- redis的过期时间和过期删除机制
一:设置过期时间 redis有四种命令可以用于设置键的生存时间和过期时间: EXPIRE <KEY> <TTL> : 将键的生存时间设为 ttl 秒 PEXPIRE <K ...
- UVA1471-Defense Lines(思维+STL)
Problem UVA1471-Defense Lines Accept: 297 Submit: 2776Time Limit: 9000 mSec Problem Description Aft ...
- sql优化的几种方法
在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ord ...