JavaScript实现cookie的写入、读取、删除功能_javascript技巧_脚本之家

•方法一:通过浏览器工具消亡 cookie
(有第三方的工具,浏览器自己也是有这种意义卡塔尔国

鉴于 cookie 最后都是以文件情势寄放在顾客端Computer中,所以查看和退换cookie 都是很有益的,那便是为什么常说 cookie 不能够寄放首要音信的原由。

  以上代码中’username’表示 cookie
名称,’达伦’代表那么些名号对应的值。若是 cookie
名称并不设有,那么就是创办一个新的 cookie;借使存在就是改过了这些 cookie
名称对应的值。即使要一再创建 cookie ,重复使用那个措施就能够。

鉴于JS安全性难点,所以一定要清除本域cookie,不能够跨域灭绝,子域能够跨,根域则不行.

//删除cookiefunction delCookie{ var exp = new Date(); exp.setTime; var cval = getCookie; if  document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();}

  Cookie幼功用法

•注:删除 cookie 临时或然招致一些网页无法平常运作,代码如下:

你浏览的当下网址本人设置的cookie

跨二级域名

  大家精通cookie是能够跨二级域名来访谈,那几个很好通晓,举个例子你
www.test1.com 在的web应用程序创设了三个cookie,要想在bbs.test1.com这么的二级域名对应的应用程序中做客,就必须你在开创cookie的时候设置domain参数domain=test1.com。 以asp.net为例
代码如下:

[csharp] view
plaincopy

  1. HttpCookie cookie = new HttpCookie(“name”, “www.Admin10000.com”);  
  2. cookie.Domain = “test1.com”;  
  3. cookie.Path = “/”;  
  4. Response.Cookies.Add(cookie);  
=varexp=newDate();//设置过期时间exp.setTime(exp.getTime()-1);//清除,path是路径,domain是域document.cookie=+;expires=+exp.toGMTString()+;path=/;domain=.;

“cookie
是储存于访谈者的微机中的变量。每当同一台Computer通过浏览器央浼有些页面时,就能发送这个cookie。你能够行使 JavaScript 来创制和取回 cookie 的值。”

  那样就无须牵记因为在cookie值中冒出了特殊符号而变成 cookie
音信出错了。

javascript中什么废除cookie?javascript中消除cookie程序代码,不懂的对象可以进去看看吧,说不允许电脑本领网的作者能够扶持到大家,具体如下:

代码相当粗略,比较切合对于cookie基本操作还不太熟悉的恋人参谋。

  在输入cookie音讯时无法蕴涵空格,分号,逗号等特殊符号,而在经常景观下,cookie
新闻的存款和储蓄都以行使未编码的艺术。所以,在装置 cookie
信息早先要先使用escape(State of Qatar函数将 cookie 值新闻实行编码,在赢获得 cookie
值得时候再利用unescape(卡塔尔函数把值进行转移回来。如设置cookie时:

•方法二:通过安装 cookie 的保质期来消灭 cookie

由于功能和总体性的原因考虑,提议尽量收缩 cookie
的利用数据,何况要尽只怕采用小 cookie。

  exdate.setHours(exdate.getHours() + expiredays);

Cookie何奇之有难点

源自:

cookie
有域和路线那么些概念。域正是domain的定义,因为浏览器是个注意安全的条件,所以分裂的域之间是不能够互相访谈cookie 的(当然能够因此非正规装置的达到 cookie
跨域访谈卡塔尔国。路线正是routing的概念,三个网页所创办的 cookie
只好被与这几个网页在同等目录或子目录下得全体网页访谈,而无法被其余目录下得网页访谈。

  cookie 平日都以由于客商访谈页面而被创立的,可是而不是独有在创造cookie 的页面本事够访谈这些 cookie。

cookie 是访谈过的网址创设的文书,用于存款和储蓄浏览新闻,举个例子个人资料新闻。

库克ie是三个高大的阐述,它同意Web开发者保
留他们的客户的登陆状态。可是当你的站点有一个以上的域名时就能够并发难题了。在库克ie规范上说,三个cookie只可以用来三个域名,不可以知道发给其余的域名。因而,如若在浏览器中对一个域名设置了一个cookie,那一个cookie对于此外的域新秀对事情未有什么益处。假如您想让您的用户从你的站点中的当中八个人展览开
登入,同期也能够在任何域名上进行登录,那可真是三个灾荒点。

cookie 存在二种档案的次序:

  在根底知识中有涉及 cookie 有域和路线的概念,未来来介绍路线在 cookie
中的作用。

在JavaScript中可以通过 document.cookie 来读取或设置这么些音信。由于 cookie
多用在顾客端和服务端之间开展通讯,所以除了JavaScript以外,服务端的语言也能够存取
cookie。

  路径能消除在同二个域下访问 cookie 的难题,大家接着说 cookie
落成同域里面访谈的主题素材。语法如下:

cookie 是有大小限定的,各类 cookie 所寄放的多少不可能超越4kb,借使 cookie
字符串的长度超过4kb,则该属性将再次回到空字符串。

  三.cookie 安全性

二.读取cookie:

  Cookie何足为奇难题

第一掌握怎么着是cookie

  小说中时常现身的 cookie 的生命周期也便是保质期和失效期,即 cookie
的存在时间。在默许的景况下,cookie
会在浏览器关闭的时候自动裁撤,可是我们得以通过expires来设置 cookie
的保质期。语法如下:

//两个参数,一个是cookie的名子,一个是值function SetCookie{ var Days = 30;//此 cookie 将被保存 30 天 var exp = new Date();//new Date; exp.setTime + Days*24*60*60*1000); document.cookie = name + "="+ escape  + ";expires=" + exp.toGMTString();}

图片 1

cookie 是存在保藏期的。在暗中同意情状下,二个 cookie
的生命周期正是在浏览器关闭的时候甘休。假设想要 cookie
能在浏览器关掉之后仍然是能够运用,就必须要为该 cookie 设置有效期,约等于cookie 的失效日期。

  青黄的domain便是安装的 cookie 域的值。

本章节共享几段有关javascript对于cookie的轻易操作,譬如对于cookie的写入和删除。

  二.cookie的读取操作

假若是当地球磁性盘中的页面,chrome的调节台是力不能够及用JavaScript读写操作 cookie
的,消除办法…换叁个浏览器^_^。

  • 从w3school复制下来的。创造贰个在 cookie 中蕴藏音信的函数:

透过浏览器工具排除 cookie 通过设置 cookie 的保质期来排除 cookie

  document.cookie = "name=value;expires=date"

Cookie 幼功知识

  “cookie
是积攒于新闻报道人员的微处理器中的变量。每当同一台Computer通过浏览器央浼某些页面时,就能够发送那一个cookie。你能够应用 JavaScript 来创立和取回 cookie 的值。” – w3school
  cookie
是访谈过的网址创制的公文,用于存款和储蓄浏览新闻,比如个人资料消息。

注:删除 cookie 有的时候只怕导致一些网页不可能不荒谬运作

1  function setCookie(c_name, value, expiredays){
2     var exdate=new Date();
3     exdate.setDate(exdate.getDate() + expiredays);
4     document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
5   }
6   使用方法:setCookie('username','Darren',30)  

暂且性质的cookie。当前使用的进度中网址会储存一些您的个人音讯,当浏览器关闭后这一个音讯也会从Computer中除去设置失效时间的cookie。就算浏览器关闭了,那些音讯业如故会在计算机中。如
登陆名称和密码,那样毫无在每趟到特定站点时都进展登陆。这种cookie
可在微机中保存几天、多少个月依旧几年。

  上面代码中的date值为青霉素T(Green威治时间State of Qatar格式的日期型字符串,生成情势如下:

从JavaScript的角度看,cookie
便是有的字符串音信。那么些音信寄放在顾客端的微微处理机中,用于顾客端Computer与服务器之间传递音信。

  四.cookie 编码细节

一.写入cookie:

 

三.删除cookie:

  一.cookie 门道概念

cookie 有三种消亡方式:

  未来大家那些函数是据守天数来安装cookie的有效性时间,假设想以别的单位(如:小时)来安装,那么退换第三行代码就可以:

alert(typeof document.cookie卡塔尔(قطر‎结果是
string,曾经本身以为是array,还闹过笑话…囧

  document.cookie = "username=Darren;secure"
//取cookies函数 function getCookie{ var arr = document.cookie.match" + name + "=; if  return unescape; return null;}

  那样设置以后的cookie保藏期就是遵守时辰为单位的。

至于cookie编码的细节难点将会在cookie高档篇中独立介绍。

 

在没介绍正文在此之前,先给大家介绍Cookie的底工知识

 

出自在网页上安置广告或图表等其余域来源的 第三方 cookie
(网址可透过利用这一个 cookie 跟踪你的接收新闻State of Qatar刚刚底蕴知识里面有提起cookie 生命周期的标题,其实 cookie 大约可分为二种情形:

  在利用JavaScript存取 cookie 时,必需求选择Document对象的 cookie
属性;一行代码介绍怎样创造和改过叁个 cookie :

各样 cookie 的格式都是这样的:=;名称和值都必需是合法的标示符。

  二.cookie 域概念

浏览器可以经过设置来经受和谢绝访谈 cookie。

  举个例子 “www.qq.com” 与 “sports.qq.com”
公用一个事关的域名”qq.com”,大家只要想让 “sports.qq.com”
下的cookie被 “www.qq.com” 访问,我们就需求用到 cookie
的domain属性,何况要求把path属性设置为 “/”。例:

实质上创造cookie的法门和概念变量的章程有一些相同,都亟待运用 cookie 名称和
cookie 值。同个网址能够成立多个 cookie ,而多个 cookie
能够存放在同叁个cookie 文件中。

  • cookie 存在两连串型:
    • 你浏览的方今网址自己设置的 cookie
    • 发源在网页上放置广告或图表等其余域来源的 第三方 cookie
      (网站可透过选用这一个 cookie 追踪你的采用音信卡塔尔

  要精确的对 cookie
举办读取其实相当的轻巧,正是对字符串举行操作。从w3school上copy这段代码来做解析:

  Cookie
高级篇

Cookie跨域访问

  下面三行代码分解为几步来看:

  三.设置cookie的保藏期

 

  • 经过new生成三个Date的实例,获得当前的小时;
  • getDate(卡塔尔国方法赢妥当前本地月份中的某一天,接着加上30就是自身期待以此cookie能过在该地保存30天;
  • 随后通过setDate(State of Qatar方法来安装时间;
  • 终极 用toGMTString(卡塔尔方法把Date对象转换为字符串,并再次来到结果
  document.cookie = "username=Darren;path=/;domain=qq.com"

 

  注:一定的是同域之间的访问,不可能把domain的值设置成非主域的域名。

  在 “”
这么些页面成立一个cookie,那么在”/达伦_code/”那个门路下的页面如:

认就能够取到cookie新闻。

function getCookie(c_name){
    if (document.cookie.length>0){  //先查询cookie是否为空,为空就return ""
      c_start=document.cookie.indexOf(c_name + "=")  //通过String对象的indexOf()来检查这个cookie是否存在,不存在就为 -1  
      if (c_start!=-1){ 
        c_start=c_start + c_name.length+1  //最后这个+1其实就是表示"="号啦,这样就获取到了cookie值的开始位置
        c_end=document.cookie.indexOf(";",c_start)  //其实我刚看见indexOf()第二个参数的时候猛然有点晕,后来想起来表示指定的开始索引的位置...这句是为了得到值的结束位置。因为需要考虑是否是最后一项,所以通过";"号是否存在来判断
        if (c_end==-1) c_end=document.cookie.length  
        return unescape(document.cookie.substring(c_start,c_end))  //通过substring()得到了值。想了解unescape()得先知道escape()是做什么的,都是很重要的基础,想了解的可以搜索下,在文章结尾处也会进行讲解cookie编码细节
      } 
    }
    return ""
  }  

  暗中同意处境下,唯有与成立 cookie
的页面在同叁个索引或子目录下的网页才方可访谈,这么些是因为安全方面包车型大巴考虑,变成不是怀有页面都能够私自探问其他页面制造的
cookie。比方:

 

  不足为奇难点中有关系消除 cookie 的三种艺术,现在要说的是使 cookie
失效,通过把保藏期的日子设置为二个已过期的光阴。既然已经有了设置保质期的诀要,那么设置失效期的章程就请感兴趣的冤家本人入手了^_^。下边继续相比深的cookie话题。

  Cookie 根基知识

 

   

  把cookie设置为secure,只保障 cookie
与服务器之间的多少传输进度加密,而保留在地面包车型客车cookie文件并不加密。假如想让本土cookie也加密,得要好加密数据。

  所以 cookie 的那性格格的称号是“secure”,私下认可的值为空。倘若一个cookie
的质量为secure,那么它与服务器之间就经过HTTPS或然别的安全磋商传递数据。语法如下:

 

图片 2

  那么哪些让这些 cookie 能被别的目录可能父级的目录访问类,通过安装
cookie 的门道就足以兑现。例子如下:

  document.cookie  = 'username=Darren'
  document.cookie = "name=Darren;path=/"

  常常 cookie
新闻都以使用HTTP连接传递数据,这种传递情势比较轻巧被翻动,所以 cookie
存款和储蓄的音讯轻松被偷取。假如 cookie
中所传递的内容非常重大,那么将需求选择加密的多寡传输。

  • cookie 是有大小约束的,每一个 cookie 所存放的多少不能够超越4kb,如若cookie 字符串的长度超过4kb,则该属性将回到空字符串。
  • 由于 cookie 最后都是以文件形式存放在顾客端计算机中,所以查看和修正cookie 都是很方便的,那便是为啥常说 cookie
    无法贮存首要消息的案由。
  • 每种 cookie
    的格式都是如此的:<cookie名>=<值>;名称和值都必需是官方的标示符。
  • cookie 是存在 保藏期的。在私下认可情形下,一个 cookie
    的生命周期正是在浏览器关闭的时候甘休。如若想要 cookie
    能在浏览器关掉之后仍可以使用,就务须求为该 cookie 设置保藏期,也正是cookie 的失灵日期。
  • alert(typeof
    document.cookie卡塔尔(قطر‎  结果是 string,曾经本身感觉是array,还闹过笑话…囧
  • cookie
    域和路径本条概念。域正是domain的定义,因为浏览器是个注意安全的情状,所以差异的域
    之间是无法互相访谈 cookie 的(当然能够由此特别装置的到达 cookie
    跨域访谈State of Qatar。路线正是routing的定义,二个网页所创设的 cookie
    只可以被与那么些网页在相符目录或子目录下得全体网页访问,而没办法被别的目录下得网页访谈(那句话有一点绕,一会看个例证就好通晓了)。
  • 其实创设cookie的办法和概念变量的点子某个相通,都急需使用 cookie
    名称和 cookie 值。同个网址能够创立八个 cookie ,而五个 cookie
    能够存放在同一个cookie 文件中。

 

图片 3

  通过上面这几个欧洲经济共同体的函数来验证在创制 cookie 的历程中大家供给潜心的地点

  当然想实现读取cookie的措施还可能有众多,比如数组,正则等,这里就不往细说了。

   

跨一级域名

  即使自己不是二级域名而是完全在不一样拔尖域名中,比方 www.test1.com
所在的web应用程序创造了多少个cookie,想要在 www.test2.com
或其二级域名的应用程序中访谈,改怎么办呢?大家精通靠常规反的方法是看望不了的,关键大家固然看看有未有主意能够访谈。事实是Cookie能够在肯定条
件下跨域,并不是恣心所欲的落到实处跨域。

  我们来做个测验,看看四个站点 www.test1.com 和
www.test2.com 怎样兑现cookie跨域访谈。
根据不奇怪大家需求有2个超级域名,并且有DNS服务器工夫够配置域名,不然大家是不能够印证的,可是此地我们也远非供给那么劳顿,大家得以经过修改hosts文件来效仿。在 c:windowssystem32driversetc 中有
hosts文件,在末尾增多上

127.0.0.1    www.test1.com
127.0.0.1    www.test2.com 

两行,就足以将本机用上边的域名访谈本机回环地址了。我们只须要在IIS上安排一套程序,ip为本机回环地址,用三个域名分别拜候就足以了。

  大家新建多个页面,分别是 Default.aspx、SSO.ashx、GetCookie.aspx。

  当中Default.aspx是 www.test1.com 的页面,访谈的地址是

[xml] view
plaincopy

  1. <%@ Page Language=”C#” AutoEventWireup=”true” CodeBehind=”Default.aspx.cs” Inherits=”Admin10000.Web.Default” %>  
  2.   
  3. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “;  
  4. <html xmlns=”;  
  5. <head runat=”server”>  
  6.     <title></title>  
  7. </head>  
  8. <body>  
  9.     <form id=”form1″ runat=”server”>  
  10.     <div>  
  11.   
  12.         <script type=”text/javascript”>  
  13.             var _frm = document.createElement(“iframe”);  
  14.             _frm.style.display = “none”;  
  15.             _frm.src = “”;  
  16.             document.body.appendChild(_frm);     
  17.         </script>  
  18.   
  19.     </div>  
  20.     </form>  
  21. </body>  
  22. </html>  

  其它叁个是 SSO.ashx 页面,大家以为它是
www.test2.com 的页面,前台未有别的代码,后台代码如下:

[csharp] view
plaincopy

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6. using System.Web.SessionState;  
  7.   
  8. namespace Admin10000.Web  
  9. {  
  10.     /// <summary>  
  11.     /// $codebehindclassname$ 的摘要表明  
  12.     /// </summary>  
  13.     [WebService(Namespace = “]  
  14.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  15.     public class SSO : IHttpHandler  
  16.     {  
  17.   
  18.         public void ProcessRequest(HttpContext context)  
  19.         {  
  20.             HttpCookie cookie = new HttpCookie(“name”, “www.Admin10000.com”);  
  21.             cookie.Domain = “test2.com”;  
  22.             cookie.Path = “/”;  
  23.             cookie.Expires = DateTime.Now.AddMinutes(10000);  
  24.             context.Response.Cookies.Add(cookie);  
  25.   
  26.             context.Response.ContentType = “text/plain”;  
  27.             context.Response.AddHeader(“P3P”, “CP=CAO PSA OUR”);  
  28.             context.Response.Write(“”);  
  29.         }  
  30.   
  31.         public bool IsReusable  
  32.         {  
  33.             get  
  34.             {  
  35.                 return false;  
  36.             }  
  37.         }  
  38.     }  
  39. }  

  最终是 GetCookie.aspx
页面,它一律是www.test2.com下的页面,未有前台代码,独有后台代码:

[csharp] view
plaincopy

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.UI;  
  6. using System.Web.UI.WebControls;  
  7.   
  8. namespace Admin10000.Web  
  9. {  
  10.     public partial class GetCookie : System.Web.UI.Page  
  11.     {  
  12.         protected void Page_Load(object sender, EventArgs e)  
  13.         {  
  14.             if (Request.Cookies[“name”] != null)  
  15.             {  
  16.                 Response.Write(Request.Cookies[“name”].Value);  
  17.             }  
  18.         }  
  19.     }  
  20. }  

  好了,以后大家访问测量检验,通过拜望
 之后,这个时候会透过iframe载入调用SSO.ashx那个页面,履行后台代码创造cookie,然后访谈
 大家取得了相应的cookie。表达在www.test1.com下开创的cookie在www.test2.com下是足以访谈到的。

  return unescape(document.cookie.substring(c_start,c_end))

要小心的地点:

  admin10000.com提 示
SSO.ashx 的后台代码中有一句:context.Response.AddHeader(“P3P”, “CP=CAO
PSA OU昂科雷”State of Qatar;
是用来安装P3P响应头。是因为IE浏览器扶植的P3P招致iframe跨站点时cookie被拦截,十分的小概创立cookie。(Fire福克斯近年来还不扶助P3P转败为胜特点,FireFox自然也荒诞不经那主题材料。无需加多P3P响应头。)

  通过iframe的src属性将test1.com域下的cookie值作为get参数重定向到test2.com域下SSO.ashx页面
上,SSO.ashx获取test1.com域中所传过来的cookie值,并将所收获到值写入cookie中,这样就大概的落到实处了cookie跨域的访问。

  此外Default.aspx页面也可改为JS调用方式:

[xml] view
plaincopy

  1. <%@ Page Language=”C#” AutoEventWireup=”true” CodeBehind=”Default.aspx.cs” Inherits=”Admin10000.Web.Default” %>  
  2.   
  3. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “;  
  4.   
  5. <html xmlns=”” >  
  6. <head runat=”server”>  
  7.     <title></title>  
  8. </head>  
  9. <body>  
  10.     <form id=”form1″ runat=”server”>  
  11.     <div>  
  12.         <script type=”text/javascript” src=”;  
  13.     </div>  
  14.     </form>  
  15. </body>  
  16. </html> 

源自:

 

 

  在JavaScript中能够经过 document.cookie 来读取或设置那几个音讯。由于
cookie
多用在客商端和服务端之间展开通讯,所以除了JavaScript以外,服务端的语言(如PHP)也能够存取
cookie。

什么是 Cookie

  document.cookie = "name=value;path=path"
  document.cookie = "name=value;expires=date;path=path"

  从JavaScript的角度看,cookie
便是部分字符串信息。这个新闻贮存在客商端的Computer中,用于顾客端电脑与服务器之间传递消息。

  注:尽管设置了secure 属性也并不意味别人无法收看您机器本地保存的
cookie 音信,所以毕竟,别把重大消息放cookie就对了,囧…

  一.简单的存取操作

  • 适逢其会底蕴知识里面有聊到 cookie 生命周期的标题,其实 cookie
    大约可分为三种景况:

    • 最近性质的cookie。当前应用的进度中网址会蕴藏一些您的个人新闻,当浏览器关闭后那么些音信也会从Computer中删去
    • 设置失效时间的cookie。即使浏览器关闭了,那个音讯业依然会在计算机中。如 登入名称和密码,那样毫无在历次到一定站点时都进行登入。这种cookie
      可在Computer中保留几天、多少个月仍旧几年
  • cookie 有二种消灭方式:
    • 通过浏览器工具扑灭 cookie
      (有第三方的工具,浏览器自己也可能有这种功用State of Qatar
    • 经过设置 cookie 的保质期来消释 cookie
    • 注:删除 cookie 有的时候恐怕招致有些网页不可能符合规律运转
  • 浏览器可以经过安装来选择和拒却访谈 cookie。
  • 出于功用和总体性的案由思考,提出尽量减弱 cookie
    的使用数据,并且要硬着头皮使用小 cookie。
  • 关于cookie编码的细节难题将会在cookie高等篇中独立介绍。
  • 例如是本地磁盘中的页面,chrome的调节台是心余力绌用JavaScript读写操作
    cookie 的,解决办法…换三个浏览器^_^。
  var _date = new Date();
  _date.setDate(_date.getDate()+30);
  _date.toGMTString();
  document.cookie = "name=value;path=path;domain=domain"

  可在暗中认可景况下, ”
“” 就不得以访问那一个cookie(光看没用,实行出真理^_^)。

图片 4

  再看看底蕴用法时涉嫌过的getCookie(State of Qatar内的一句:

   象牙白字体path正是 cookie 的渠道,最常用的事例就是让 cookie
在跟目录下,那样不管是哪位子页面创立的 cookie,全体的页面都足以访谈到了:

  原来来想在广泛难题这段介绍cookie编码的知识,因为倘诺对那几个不精通的话编码难点实在是二个坑,所以依然亲力亲为说说。

  document.cookie = name + "="+ escape (value)
You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图