cookie 详解
cookie概览
cookie是Web浏览器存储的少量命名数据,它与某个特定的网页或网站关联在一起。cookie是用来给Web浏览器提供内存,以便脚本和服务端程序可以在一个页面使用另一个页面的输入数据,或者在用户离开页面并返回时恢复用户的优先级及其他变量。
cookie操作及属性
Document对象含有一个cookie属性,通过javascript可以对cookie进行操作。
cookie是一个字符串属性,可以用它对当期网页的cookie进行读操作、创建操作、修改操作和删除操作。
除了名字和值外,每个cookie都有四个可选的属性,分别是:
expires、path、domain、secure
expires:
指定了cookie的生存期。默认情况下,cookie是暂时存在的,它们存储的值只在浏览器会话期间存在。当用户退出浏览器后,这些值也就丢失了。如果想让一个cookie存在的事件超过一个浏览器会话期,必须告诉浏览器希望它保存cookie多长时间。做到这一点就是把expires属性设置为未来的一个过期日期。尽管expires属性仍然有效,但是它已经被max-age属性所取代,后者用秒来设置cookie的生命期。设置这两个属性的任何一个,都会使浏览器把cookie保存到一个本地文件中,以便用户下次访问这个网页时能够再将它读取出来。一旦超过了终止日期,那个cookie就会被浏览器自动从cookie文件中删掉。
path:
它指定了与cookie关联在一起的网页。默认情况下,cookie会和它创建的网页以及与这个网页处于同一个目录下的网页和处于该目录下的子目录的网页关联,也就是说cookie只能在同一个目录下的网页共享。但是,有时候在不同的目录下使用到这个cookie的值,这个时候就要指定cookie的path属性了。例如:
在www.example.com/catalog/widgets/index.html 页面下设置的cookie将path属性设置为path="/catalog"
那么在www.example.com/catalog/other.html 的页面下也可以访问这个cookie的。
如果将path设置为path="/" ,那么这个cookie在www.example.com服务器上的所有网页都是可见的。
domain:
但是,在一些大的网站可能需要多个Web服务器共享cookie。例如
order.example.com 的服务器要读取位于catalog.example.com的页面创建的cookie。这就要用到cookie的domain属性了。将domain属性设置成domain=".example.com",那么位置example.com域的其它服务器上的网页都可以访问这个cookie。如果没有设置domain属性,默认值就是创建cookie的网页所在服务器主机名。
secure:
它指定了网络上如恶化传输cookie值。默认情况下cookie是不安全的,也就是说,他们是同个一个普通的、不安全的HTTP链接传输的。但是如果将cookie标记为安全,那么它将在浏览器和服务器通过HTTPS或其他安全协议连接时才被传输。
cookie操作DEMO:
创建一个缓存一年的cookie:
document.cookie = "user = value;max-age="+(60*60*24*356);
设置对应的属性:
document.cookie = "user = value;max-age="+(60*60*24*356)+";path="+path+";domain="+domain+";secure";
cookie工具类
var cookies = {
//读取cookie:字符串截取方法
getCookieByStr:function (c_name){
if (document.cookie.length>0){
c_start=document.cookie.indexOf(c_name + "=");//检测是否存在对于的键值
if(c_start!=-1){
c_start=c_start + c_name.length+1; //返回等号后面一个字符索引,及对应字符开始位置
c_end=document.cookie.indexOf(";",c_start);//从c_start位置开始搜索字符";",返回字符的位置索引
if (c_end==-1) {c_end=document.cookie.length;}//如果找不到字符";",即只有一个cookie值
return unescape(document.cookie.substring(c_start,c_end)); //通过前后位置截取对于的cookie值,并解码
}
}
return ""; //不存在则返回空
},
//设置cookie--名称/值/过期天数
setCookie:function(c_name,value,expiredays){
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);//设置日期
document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
},
//删除cookie
delCookie:function(c_name){
var exdate = new Date();
exdate.setDate(exdate.getDate()-1);//昨天日期
document.cookie = c_name+"=;expires="+exdate.toGMTString();
}
};
完整demo下载:
cookie 详解的更多相关文章
- cookie详解
一.cookie详解 (1)设置cookie 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie: document.cookie="userId ...
- ASP.NET 操作Cookie详解 增加,修改,删除
ASP.NET 操作Cookie详解 增加,修改,删除 Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它 ...
- 网络基础 cookie详解
cookie详解 by:授客 QQ:1033553122 cookie干嘛用的? 参见文章http 会话(session)详解: 网络基础 http 会话(session)详解 cookie分类 ...
- cookie详解(含vue-cookie)
今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://mp.weixin.qq.com/s/NXrH7R8y2Dqxs9Ekm0u33w 原文如下,记录到此供以 ...
- 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个月:在学以致用的工作学习里,对于不怎么使用的部分,多少有些雾里探花的窘迫感-差不多是了解一二,然而又非真切的明晰:这就使得再用的时候,总要去再搜索一番:如此颇为难受,倒不 ...
- Cookie的使用、Cookie详解、HTTP cookies 详解、获取cookie的方法、客户端获取Cookie、深入解析cookie
Cookie是指某些网站为了辨别用户身份.进行session跟踪而存储在用户本地终端上的数据(通常经过加密),比如说有些网站需要登录才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我 ...
- Java web Cookie详解(持久化+原理详解+共享问题+设置中文+发送多个Cookie)
Java web Cookie详解 啥是cookie? 查询有道词典得: web和饼干有啥关系? 这个谜底等等来为大家揭晓 会话技术 web中的会话技术类似于生活中两个人聊天,不过web中的会话指的是 ...
随机推荐
- linux 新机器的配置(git + nodejs+ mongodb)
安装nodejs: wget https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.xz tar xvf node-v6.9.5-linux ...
- AMQP消息队列之RabbitMQ简单示例
前面一篇文章讲了如何快速搭建一个ActiveMQ的示例程序,ActiveMQ是JMS的实现,那这篇文章就再看下另外一种消息队列AMQP的代表实现RabbitMQ的简单示例吧.在具体讲解之前,先通过一个 ...
- Django makemigrations 不行时
- IntellJ IDEA下写JUnit
安装配置JUnit File->Settings->Plugins->Browse Repositories->在右侧搜索框输入"junit"-> ...
- System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容”
.net应用程序通过Oracle.DataAccess.dll访问64位的Oracle服务器,在连接时出现以下异常:“System.TypeInitializationException: The t ...
- Confluence 6 任务的类型
下面是有关你可以调整的计划任务列表. Confluence 备份(Back Up Confluence) 对 Confluence 站点执行备份操作. 每集群(Per cluster) At 2am ...
- 9.jexus 配置ssl
这里非常感谢宇内流云,这是他的博客http://www.cnblogs.com/yunei/. 1,运行环境 CentOS7 jexus5.8.2.9(独立版) jexus 的下载地址 https:/ ...
- LeetCode(109):有序链表转换二叉搜索树
Medium! 题目描述: 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: ...
- 使用 declare 语句和strict_types 声明来启用严格模式:
使用 declare 语句和strict_types 声明来启用严格模式: Caution: 启用严格模式同时也会影响返回值类型声明. Note: 严格类型适用于在启用严格模式的文件内的函数调用,而不 ...
- 异常小结:上一张图搞清楚Java的异常机制
下面是Java异常类的组织结构,红色区域的异常类表示是程序需要显示捕捉或者抛出的. Throwable Throwable是Java异常的顶级类,所有的异常都继承于这个类. Error,Excepti ...