zoukankan      html  css  js  c++  java
  • Cookies相关技术

    Cookies是一种用来存信息的对象,存在于客户端,是一种比较实用的对象。在众多的电脑书籍中,对该对象的工作原理总是一笔带过,没有做详细的说明(不过也不能怪作者,微软太保密了)。但Cookies对于网站设计人员来说,却是必不可少的。因为设计者往往需要在客户端保存会员的信息,用户在网站的个人设置等等,如果全靠服务器记忆这些数据,容易造成信息丢失(如Session)和烦琐(如靠数据库储存)等。
        签于此,我把我自己使用Cookies的一些心得写出来,希望对大家有所帮助。
    一、ASP中如何使用Cookies:
    1、写Cookies代码: 
    <%
      Response.Cookies("xxx")("aaa") = "111"
      Response.Cookies("xxx")("bbb") = "222"
      Response.Cookies("xxx").Path = "/forum"
      Response.Cookies("xxx").Expires = DateAdd("m",1,now())
    %> 

        第一句和第二句是对客户端写Cooikes,xxx可以看做是一个数据集合,aaa和bbb分别是集合xxx里的键名,111和222分别是aaa和bbb的值。
        第三句为xxx指定path(只写),即作用域,可以理解为:写到该作用域的数据,只有在站点下的(如forum)文件夹下(包括子文件夹)的页面内才可以读到,即作用域为(如forum)文件夹。如果去掉该句,默认在本站点下(该代码页所在的位置为子文件夹的话)或该代码页所在的虚拟目录下(如果该代码页所在的位置为虚拟目录的话)有效。例如:在子文件夹下不设定path或path="/",生成的cookies作用域为整个站点;在虚拟目录下不设定path,生成的cookies作用域为本虚拟目录;path="/myasp",生成的cookies作用域为站点下myasp子目录...;
        第四句为xxx集合指定expires(只写)失效期。代码所示为一月后失效。有了该句后会在客户IE缓存中生成一个cookies文件,该文件名的命名规则是:如果指定了path,将为path的值(当然无/);如果没有指定path,为该代码页所在的虚拟目录名(如果该代码页所在的位置为虚拟目录的话);如果以上条件都不符合,由客户端的系统自行指定,为Cookie:主机名@域名。如果没有该句,不会生成cookies文件,cookies信息将保存在客户的内存中,该信息在IE进程内有效,即用户关闭该站的所有页面后该信息自行消失。
    2、读Cookies代码: 
    <%
      yyy = Request.Cookies("xxx")("aaa")
      zzz = Request.Cookies("xxx")("bbb")
    %> 

        该代码可以读到该作用域内的Cookies信息。读cookies的过程是:先从客户端的内存中找该作用域的Cookies信息,如果没有,从客户端的IE缓存中找该作用域的Cookies文件,如果没有,从上级作用域的Cookies文件中去找...如果都没有,将读不到信息。优先级为:内存本作用域>IE缓存本作用域>IE缓存上级作用域...
    3、清Cookies代码: 
    <%
      Response.Cookies("xxx").path = "/forum"
      Response.Cookies("xxx")("aaa") = ""
      Response.Cookies("xxx")("bbb") = ""
    %> 

        由于ASP无清除Cookies的方法,所以可用令相应作用域相应集合相应键值的内容为空的办法来解决,由于没有指定expires,以往该作用域所生成cookies文件在代码执行后将消失,起到了清除Cookies的作用。
        第一句指定作用域,如果没有该句,默认的操作对象为本站点下的cookies或该代码页所在的虚拟目录的cookies(如果该代码页所在的位置为虚拟目录的话)。所以如果Cookies作用域为文件夹的话,必须指定path。

    需要说明的几点:
        1、因为作用域的关系,一个站点下可能生成几个Cookies。所以在使用时一定要分清作用域,以免读写错信息。
        解决的办法为:尽量将站点下分类的文件夹,设成虚拟目录,这样不用指定path,且读写cookies都在本虚拟目录下执行,不易发生错误。
        2、一个作用域下只可能生成一个Cookies,所以要存储多个信息时,可用不同的集合来加以区分。
        3、尽量给客户提供选择Cookies失效期的权力,以免发生客户信息失窃的现象。

    二、客户端脚本中使用Cookies:
        由于cookie(注意在此是cookie,不是Cookies)属于IE的document对象的一个属性,所以使用起来远不如ASP方便。但也可以实现一些基本的功能...
    1、写Cookies代码: <script language="javascript"> var mydate = new Date(); var str = ''; mydate.setMonth(mydate.getMonth()+1); str = mydate.toUTCString(); document.cookie = 'xxx=aaa=111&bbb=222;path=/forum;expires=' + str; </script>
     运行代码 拷贝代码 保存代码 [可先修改部分代码再运行;请先检查代码确定安全]

        运行以上代码后,查看你的IE临时文件夹下,是不是生成了一个forum文件名的cookies文件?
        path和expires的含义同ASP,只不过用得形式不同而已,失效期字符串的格式必须为(无论JS还是VBS):英文星期, 数字日期 英文月份 yyyy hh:mm:ss UTC不然生不成Cookies...
        str中保存得就是该格式的字符串。
        2、读cookies时,也用document.cookie,只不过读出来的是xxx=aaa=111&bbb=222形式的子符串(当然path和expires是读不出来的),需要按规律做相应分离后才能得到相应的值。有兴趣的朋友可自己分离测试。
  • 相关阅读:
    LeetCode0350.两个数组的交集 II
    LeetCode0055.跳跃游戏
    LeetCode0739.每日温度
    LeetCode面试题46.把数字翻译成字符串
    LeetCode0128.最长连续序列
    LeetCode面试题29.顺时针打印矩阵
    LeetCode0238.除自身以外数组的乘积
    2020软件工程最后一次作业
    如何防止XSS攻击
    需求规格说明书
  • 原文地址:https://www.cnblogs.com/fuyingke/p/669118.html
Copyright © 2011-2022 走看看