【JS】【笔记】JavaScript入门经典(第5版)第10章 JavaScript和cookie
来源:互联网 发布:mac口红whirl 编辑:程序博客网 时间:2024/04/29 15:06
本文为个人读书笔记,大部分为书中内容摘要。仅供记录和分享学习中遇到的需要留意的问题,如有相关版权问题请及时通知作者。
概述
http是一种无状态协议,不保存任何信息。这给在浏览器回话期间维持某种连续性带来了困难,cookie是解决这个问题的一个途径。
cookie本身是一些短小的信息串,能够由页面保存在用户的计算机上,然后可以被其他页面读取。
cookie的局限
通常每个域名20个,每个域4KB,有很多情况会导致其意外消失
document.cookie属性
JavaScript使用document对象的cookie属性存储和获取cookie。
每个cookie基本上就是一个由成对的名称和值组成的字符串:username=sam
页面加载到浏览器里时,浏览器会收集与页面相关的全部cookie,放到类字符串的document.cookie属性里。在这个属性里,每个cookie以分号分隔。
数据的编码和解码
某些字符不能再cookie里使用,在把数据存入cookie前需要编码。
escape()编码 unescape()解码
escape()会把字符串里任何非ASC II字符转换为相应的2位或4位十六进制格式。
cookie组成
cookie规范:RFC6265 2011
cookiename,cookievalue cookie字符串里看到的名称与值
domain:可选,向浏览器指明cookie属于哪个域,默认是设置cookie页面的所在域。
path:指定可以使用cookie的目录,常用默认“/”,所有
secure:可选,浏览器发送cookie给服务器时是否使用SLL安全标准
expires:失效日期,以UTC事件表示。没有设置cookie的生命期就和当前浏览器会话一样长
编写cookie
只要把包含所需属性的值赋予document.cookie
编写cookie的函数
function createCookie(name,value,days,path,domain,secure){
if(days){
var date=new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires=date.toGMTString();
}
else var expires="";
cookieString=name+"="+escape(value);
if(expires) cookieString+=";expires="+expires;
if(path) cookieString+=";path="+excape(path);
if(domain) cookieString+=";domain="+escape(domain);
if(secure) cookieString+=";secure";
document.cookie=cookieString;
}
读取cookie
1、split()
var crumbs=document.cookie.split(‘;’);
2、indexof,substring
function getCookie(name){
var nameEquals=name+"=";
var crumbs=document.cookie.split(';');
for(var i=0;i<crumbs.length;i++){
var crumb=crumbs[i];
if(crumb.indexOf(nameEquals)==0){
return unescape(crumb.substring(nameEquals.length,crumb.length));
}
}
return null;
}
删除cookie
把它的失效日期设置为今天以前的日期
function deleteCookie(name){
createCookie(name,"",-1);
}
即使脚本把cookie删除,某些浏览器也会维持其至重新启动浏览器。如果cookie是否被删除是程序运行的条件,就应该使用getCookie来测试被删除的cookie,确保它确实不存在了。
在一个cookie里设置多个值
把需要的值组成一个字符串,让它成为要保存在cookie里的值。
var userdata="Sandy|26|A23679";
createCookie("user",userdata);
读取
var myUser=getCookie("user");
var myUserArray=myUer.split('|');
var name=myUserArray[0];
var age=myUserArray[1];
0 0
- 【JS】【笔记】JavaScript入门经典(第5版)第10章 JavaScript和cookie
- 【JS】【笔记】JavaScript入门经典(第5版)第5章 数据类型
- 【JS】【笔记】JavaScript入门经典(第5版)第1章 概述
- 【JS】【笔记】JavaScript入门经典(第5版)第2章 简单的脚本
- 【JS】【笔记】JavaScript入门经典(第5版)第3章 函数
- 【JS】【笔记】JavaScript入门经典(第5版)第6章 脚本
- 【JS】【笔记】JavaScript入门经典(第5版)第7章 面向对象编程
- 【JS】【笔记】JavaScript入门经典(第5版)第8章 JSON
- 【JS】【笔记】JavaScript入门经典(第5版)第9章 响应事件
- 【JS】【笔记】JavaScript入门经典(第5版)第4章 DOM对象和内置对象
- 笔记练习:《Javascript入门经典(第5版)》page185_15.10_Practice
- 笔记练习:《Javascript入门经典(第5版)》page89_7.9_Practice
- 笔记练习:《Javascript入门经典(第5版)》page115_9.9_Practice
- 笔记练习:《Javascript入门经典(第5版)》page126_10.12_Practice
- 笔记练习:《Javascript入门经典(第5版)》page138_11.8_Practice
- 笔记练习:《Javascript入门经典(第5版)》page150_12.8_Practice
- 笔记练习:《Javascript入门经典(第5版)》page163_13.8_Practice
- 笔记练习:《Javascript入门经典(第5版)》page175_14.11_Practice
- 【JS】【笔记】JavaScript入门经典(第5版)第8章 JSON
- light1010 - Knights in Chessboard【找规律】
- 【JS】【笔记】JavaScript入门经典(第5版)第9章 响应事件
- STM32F10X USART 中断接受+发送,测试无误
- 自定义Dialog
- 【JS】【笔记】JavaScript入门经典(第5版)第10章 JavaScript和cookie
- java32.HTTP通信------使用Http的Get方式读取网络数据
- Linux内核调试工具: Crash - 编码要求
- D7100 调节白平衡
- 初识过滤器笔记
- Longest Increasing Path in a Matrix
- BestCoder Round #70 总结
- HDU1007 求最短距离的点对
- LeetCode 144:Binary Tree Preorder Traversal