【读书笔记--cookie】JavaScript权威指南 第六版
遇到一些问题需要用cookie处理,正好读了一下犀牛书关于cookie的介绍,整理了一些笔记。
cookie是指web浏览器存储的少量数据,同时它是与具体的web页面或者站点相关的。
cookie数据会自动在web浏览器和web服务器之间传输,因此服务器端脚本就可以读、写存储在客户端的cookie值。
在JavaScript中,cookie用于保存状态以及能够为web浏览器提供一种身份识别机制。
但是在JavaScript中使用cookie不会采用任何加密机制,因此它们是不安全的。但是,通过https来传输cookie数据是安全的,不过这和cookie本身无关,而和https:协议有关。
cookie属性:有效期和作用域
除了名(name)和值(value),cookie还有一些可选的属性来控制cookie的有效期和作用域。
cookie的作用域是通过文档源和文档路径来确定的。该作用域通过cookie 的path和domain属性也是可配置的。
但是值得注意的是,cookie的path属性不能被用做访问控制机制。
cookie 的作用域默认由文档源限制。但是,有的大型网站想要子域之间能够相互共享cookie。这个时候就需要通过设置cookie的domain属性来达到目的。
cookie的域只能设置为当前服务器的域。
cookie的属性是secure ,它是一个布尔类型的属性,用来表明cookie的值以何种形式通过网络传递。
cookie默认是以不安全的形式(通过普通的、不安全的HTTP连接)传递的。
而一旦cookie被标识为"安全的",那就只能当浏览器和服务器通过https或者其他的安全协议连接是才能传递它。
保存cookie
给当前文档设置默认有效期的cookie值:
name = value;
document.cookie = "version = " + encodeURLComponent(document.lastModified);
由于cookie的名/值中的值是不允许包含分号、逗号和空白符,因此,在储存前一般可采用JavaScript核心全局函数encodeURLComponent()对值进行编码。
相应的,读取cookie值的时候需要采用decodeURLComponent()进行解码。
延长cookie的有效期,需要设置max-age属性来指定cookie的有效期(单位是秒)。
name = value;max-age = seconds;
通过一个函数来设置一个cookie,同时提供一个可选的max-age属性:
/*
*以名/值的形式储存cookie
*同时采用encodeURLComponent()函数进行编码,来转义分号、逗号和空白符
*如果daysToLive是一个数字,设置max-age属性为该属性值表示cookie直到指定的天数。
*到了才会过期。如果daysToLive是0就表示删除cookie
*/
function setcookie(name,value,daysToLive) {
var cookie = name + "=" encodeURLComponent(value);
if(typeof daysToLive ==="number")
cookie += "; max-age = " + (daysToLive*60*60*4);s
document.cookie = cookie;
}
如果要设置cookie的path、domain和secure属性,只需在存储cookie值前,以如下字符串形式追加在cookie值后面:
;path = paht
;domain = domain
;secure
要改变cookie的值,需要使用相同的名字、路径和域,但是新的值重新设置cookie的值。
同样的,设置新的max-age属性就可以改变原来cookie的有效期。
要删除一个cookie,需要使用相同的名字、路径和域,然后指定一个任意(非空)的值,并且将max-age属性指定为0,再次设置cookie
读取cookie
使用JavaScript表达式来读取cookie属性的时候,返回的值是一个字符串,该字符串都是由一系列名/值对组成,
不同名/值对之间通过”分号和空格“分开,其内容包含了所有作用在当前文档的cookie。
但是,它并不包含其他设置的cookie属性。通过document.cookie属性可以获取cookie的值,但是为了更好的查看cookie的值,
一般会采用split()方法将cookie值中的名/值对分离出来。
定义一个getcookie()函数,该函数将document.cookie属性的值解析出来,将对应的名/值对储存到一个对象中,函数最后返回该对象。
解析document.cookie属性值
/*
*将document.cookie的值以名/值对组成的一个对象返回
*假设储存cookie的值的时候是采用encodeURLComponent()函数编码的
*/
function getcookie(){
var cookie = {}; //初始化最后要返回的对象
var all = document.cookie; //在一个大写字符串中获取所有的cookie值
if (all === "") { //如果该cookie属性值为空字符串
return cookie; //返回一个空对象
}
var list = all.split(";");//分离出名/值对
for(var i = 0;i<list.length;i++) { //遍历每个cookie
var cookie = list[i];
var p = cookie.indexOf("="); //找到第一个”=“符号
var name = cookie.substring(o,p); //获取cookie名字
var value = cookie.substring(p+1); //获取cookie对应的值
value = decodeURLComponent(value);//对其进行解码
cookie[name] = value; //将名/值对储存到对象中
}
retuen cookie;
}
【读书笔记--cookie】JavaScript权威指南 第六版的更多相关文章
- 《JavaScript权威指南 第六版 中文版》(一)
<JavaScript权威指南 第六版 中文版> 第二章 词法结构 2.1字符集 JavaScript是使用Unicode字符集编码写的. 2.1.1区分大小写 JavaScript是区分 ...
- 【笔记】javascript权威指南-第六章-对象
对象 //本书是指:javascript权威指南 //以下内容摘记时间为:2013.7.28 对象的定义: 1.对象是一种复合值:将很多值(原始值或者对象)聚合在一起,可以通过名字访问这些值. ...
- [在读] javascript权威指南第六版
耽搁了有大半年没看,记得当时看到5分之2了吧.权威指南是不管读几遍都能觉得有新收获的书^^
- JS 语言核心(JavaScript权威指南第六版)(阅读笔记)
前言: 对于程序员,学习是无止境的,知识淘换非常快,能够快速稳固掌握一门新技术,是一个程序员应该具备的素质.这里将分享本人一点点不成熟的心得. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思 ...
- JavaScript权威指南第六版(阅读笔记)
前言: 对于软件行业学习是无止境的,因为知识更替非常快,能够快速稳固掌握一门新技术是一个程序员应该具备的基本素质. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思想需要细心和大量实践才能慢慢 ...
- javascript权威指南第六版学习
第二章 语法结构 2.1 字符集 什么是字符集?各种字符集什么关系?unicode,utf-8是什么关系? 字符(Character)是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等 ...
- Note | Javascript权威指南[第六版] 第1章:Javascript概述
JavaScript是一门高端的.动态的.弱类型的编程语言,非常适合面向对象和函数式的编程风格.JavaScript的语法源自Java,它的一等函数(first-class function)来 ...
- Note | javascript权威指南[第六版] 第2章:词法结构
语法结构规定了诸如变量名是什么样的.怎么写注释,以及程序语句之间如何分隔等规则.本章用很短的篇幅来介绍JavaScript的词法结构. 2.1.字符集 JavaScript程序是用Unic ...
- 第六章 对象-javaScript权威指南第六版
什么是对象? 对象是一种复合值,每一个属性都是都是一个名/值对.原型式继承是javaScript的核心特征. 对象常见的用法有,create\set\query\delete\test\enumera ...
随机推荐
- 第6章 传输层(详解TCP的三次握手与四次挥手)
第6章 传输层 传输层简介 传输层为网络应用程序提供了一个接口,并且能够对网络传输提供了可选的错误检测.流量控制和验证功能.TCP/IP传输层包含很多有用的协议,能够提供数据在网络传输所需的必要寻址信 ...
- Javascript Events
事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行. 事件句柄 html4.0的新特性之一是有能力使html事件触发浏览器中的动作action,比如当用户点击某个html元素时启动一段Ja ...
- Hibernate笔记7--JPA CRUD
1.环境搭建,注意包结构的问题,src下建立名为META-INF的文件夹,放persistence.xml,位置放错,读不到会报错. <?xml version="1.0" ...
- ArcGIS中Features与JSON的互相转化
实际操作过程非常简单,这里就简单记录下转换工具的位置:
- Apache Solr-6.0.1 (OpenLogic CentOS 7.2)
Apache Solr-6.0.1 (OpenLogic CentOS 7.2) 平台: CentOS 类型: 虚拟机镜像 软件包: java1.8 solr6.0.1 application ser ...
- jquery mmgrid使用
参考 http://miemiedev.github.io/mmGrid/examples/index.html
- HDU5124 lines
离散化 + 树状数组. 这些东西自己都是刚接触不久的,所以需要多写点题练练手. 题目描述: 一维坐标中有N条线段,其中有一个点上面覆盖的线段数是最多的,求该点上面的线段数目. 这道题和HDU1556特 ...
- 解决spring配置文件没有提示的问题
我们使用eclipse编辑spring配置文件时,经常没有提示,而无从下手时. 现在我们就来解决没有提示的问题. 原因是因为eclipse中没有配置xsd文件.. 步骤一:把如下头文件拷贝到你的spr ...
- Airflow 调度基础
1. Airflow Airflow是一个调度.监控工作流的平台.用于将一个工作流制定为一组任务的有向无环图(DAG),并指派到一组计算节点上,根据相互之间的依赖关系,有序执行. 2. 安装 pip安 ...
- JS let和const关键字
ES2015 引入了两个重要的 JavaScript 新关键词:let 和 const. Let关键字 1.用于作用域:块作用域,循环作用域,函数作用域,全局作用域, 在 ES2015 之前,Java ...