每周分享之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,这个用起来也挺简单,就不赘述了,了解一下就行~~

 

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

 

转载于:https://www.cnblogs.com/sunshine-wy/p/9058394.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天都用,但是你一定不知道麦克风的灵敏度是什么

我们讨论音频器件的时候,就不得不去讨论灵敏度,麦克风、喇叭、蜂鸣器这些器件都会涉及到灵敏度。灵敏度体现的是输出和输入的关系,因为和声音有关,我们必须要知道声压,理解灵敏度、测量灵敏度,并从中选择合…

查找乱码字符串的SQL

昨天系统导数据库,一不小心把nls_language设错了,结果导出来的函数和过程里面的中文字符串中的字符都变成问号了(?)。 结果业务部门报告,好多报表里面的内容都变成问号了,这下麻烦了。 首要问题…

每日一题(23)——malloc与free(四)

void Test(void) {char *str (char *)malloc(100);strcpy(str, "hello");free(str);if(str ! NULL){strcpy(str, "world");printf(str);} }1、指出编程错误 2、指出错误后果 3、指出纠正方法 分析: 篡改动态内存区的内容,后果难以…

三大类sql语句——该记录是本人以前微博上的文章

一、DML语句二、DDL语句三、事务控制语句一、DML语句-Data Mulipulation LanguageDML语句数据操作野菊执行后会生成一个事务,事务需要提交才能够永久生效,在commit前是可以进行回滚撤销操作的!1、insert into 插入语句(1&#xff…

邓总的vim配置,需要的自己拿走~

我比较喜欢直接用source insight看代码,不过邓总很喜欢用vim,今天特意让他整理了他的vim 配置,喜欢的同学可以自行下载。在公众号后台回复「vim」获取下载链接VIM 配置查看本机 VIM cscope ctagsvim Ubuntu自带,cscope 、ctags…

html嵌套html解决办法(object/object)

后台管理系统多用到了页面嵌套页面的场景&#xff0c;下面是我在工作中解决的方法&#xff0c;利用<object></object>的data属性&#xff0c;下面试w3c的介绍&#xff1a; data 属性用于指定供对象处理的数据文件的 URL。 该属性的值是文件的 URL&#xff0c;该 UR…

每日一题(24)—— const

关键字const是什么含意&#xff1f; 只读变量&#xff1b;const int a; int const a; const int *a; int * const a; int const * a const; 前两个的作用是一样&#xff0c;a是一个常整型数。第三个意味着a是一个指向常整型数的指针&#xff08;也就是&#xff0c;整型…

原来,我有这样期望

我妈小时候一直跟我们讲他们村里的一个人&#xff0c;我妈说他们家特有钱&#xff0c;他们家的粮仓里装满了花生和大米&#xff0c;而让他们变得这么富有的原因是—勤劳和省。我还上小学那几年&#xff0c;水稻的产量很低「袁隆平的杂交水稻是在后来几年才普及的」&#xff0c;…

详解SMS下OSD2008

百忙有闲来和大家分享一下接着上篇的SMS的一个应用—OSD&#xff0c;长话短说&#xff0c;开始吧&#xff01;老规矩&#xff0c;先看看拓扑图在来构思下要做的步骤&#xff0c;一 、SMS-OSD前的装备工作 二 、安装OSD组件 三 、创建捕获光盘 四 、捕获模板系统镜像 五 、创建、…

python学习笔记(二十)初识面向对象

面向对象的编程的主要思想是把构成问题的各个事物分解成各个对象&#xff0c;建立对象的目的不是为了完成一个步骤&#xff0c;而是为了描述一个事物在解决问题的过程中经历的步骤和行为。对象作为程序的基本单位&#xff0c;将程序和数据封装其中&#xff0c;以提高程序的重用…

一文读懂 | 进程怎么绑定 CPU

昨天在群里有朋友问&#xff1a;把进程绑定到某个 CPU 上运行是怎么实现的。首先&#xff0c;我们先来了解下将进程与 CPU 进行绑定的好处。进程绑定 CPU 的好处&#xff1a;在多核 CPU 结构中&#xff0c;每个核心有各自的L1、L2缓存&#xff0c;而L3缓存是共用的。如果一个进…

每日一题(25)—— 自加++

C语言同意一些令人震惊的结构,下面的结构是合法的吗&#xff0c;如果是它做些什么&#xff1f; int a 5, b 7, c; c ab; 不管你相不相信&#xff0c;上面的例子是完全合乎语法的。问题是编译器如何处理它&#xff1f;水平不高的编译作者实际上会争论这个问题&#xff0c;根…

Spark天堂之门解密

本课主题 什么是 Spark 的天堂之门Spark 天堂之门到底在那里Spark 天堂之门源码鉴赏引言 Spark 天堂之门就是SparkContext&#xff0c;这篇文章会从 SparkContext 创建3大核心对象 TaskSchedulerImpl、DAGScheduler 和 SchedulerBackend 开始到注册给 Master 这个过程中的源码鉴…

C语言,使用union了解内存

今天一个读者朋友给我发的一段代码&#xff0c;这段代码让他有了疑惑。代码如下&#xff1a;#include "stdio.h" int main() {typedef union{short i;char j[2];}DATA;DATA a;a.j[0] 10;a.j[1] 1;printf("%x\n",a.i);return 0; }他的几个测试代码以及输出…

我做技术的这十年,我不做技术的这一年~

我和明哥认识是因为之前他在群里跟我们分享一件事情&#xff0c;当时因为明哥相信网上认识的一个朋友&#xff0c;说是要一起开发一个项目&#xff0c;结果他被骗了几万块钱。然后聊着聊着&#xff0c;我觉得明哥太实诚了&#xff0c;后面继续接触&#xff0c;知道他做的一些决…

每日一题(26)—— 无限循环的几种形式

嵌入式系统中经常要用到无限循环&#xff0c;你怎么样用C编写死循环呢&#xff1f; 1、while(1) { } —— 个人推荐使用 2、for(;;) { } —— 这个实现方式让我为难&#xff0c;因为这个语法没有确切表达到底怎么回事。 3、goto Loop: ... goto Loop; —— 应试者如给…

Oracle Golden Gate概要

Oracle GoldenGate简介 Oracle Golden Gate用于源数据库与目标数据库的数据复制备份&#xff1b;可以在异构的环境(各种操作系统和数据库)之间实现数据亚秒级的实时复制备份&#xff1b;以及可以在实时数据仓库、数据同步、集中/分发、容灾、数 据库升级和迁移等多个场景下应用…

android 音频加载hal so调试

1. 整个加载流程图 2. 加载hal so的代码位置 2.1 在audiopolicymanager中的加载位置 diff --git a/frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp index 632290a9…

【修炼5】《基础篇》别把项目成功当目标

副标题——做对的事情&#xff0c;远比你把事情做对&#xff0c;来的重要&#xff01;&#xff08;作者&#xff1a; 孙继滨&#xff09;<?xml:namespace prefix o />【项目经理之修炼】 全文索引给大家提一个问题&#xff1a;***************************************…