本博客已经转移至www.mozlite.com,可能不会及时更新和关注留言记录,mvc请加群88794325(已满),8781765ASP.NET(MVC)讨论二群

Cookie标注

在实现验证或其他状态保存中,我不喜欢使用Session,因为在我认为经常会丢失数据,而且SessionID也是基于Cookie来保存的。最近几天我做了个多语言的小软件,使用Cookie来保存当前用户选择的Cookie,使用jQuery.Cookie插件来设置,对于这个Cookie得path搞得一塌糊涂。在这里记录一下我对此的理解,问题也能够得到相应的解决。

1.Path

在.NET中Cookie的的保存获取就不需要多说了,百度一下基本很多,而且都可以使用,就是这个Path以前一直没有注意的问题。这个Path描述为虚拟目录,Cookie允许不同目录下的值各自独立。如果没有指定这个Path,默认就是当前虚拟路径,这样就会造成了,设置语言的时候,不同路径下的语言没能够同步解决。其实解决的问题很简单,将Path设置为根目录即可,就是“/”。当然如果在当前目录下设置同样的键的Cookie,将覆盖根目录的Cookie,因为当前目录下的Cookie比较优先。

2.Domain

如果想解决子域名同样适用这个Cookie,那就可以将Domain设置为域名地址,那样相同域名下的二级,三级等域名将共享这个Cookie,当然上面提到的Path也需要设置相同的目录,否则是得不到的。在验证用户保存状态中一般设置为个目录即“/”,这个目录是整站公用的目录,所以在相同站点下的所有目录的这个Cookie值都是可以得到的。

3.Expires

过期时间,这个主要设置过期时间的长短,在jQuery中可以有两种设置方法:如果是数字则表示天数,从建立Cookie算起;如果是时间则表示特定的时间。在.NET中就是时间实例对象,如果需要移除这个Cookie可以将这个时间设置为过去的某一个时间,那样Cookie就会消失。

4.Secure

是否使用安全SSL进行访问,即HTTPS。

 

以下是jQuery.Cookie的使用文档,基本很简单顺便贴上:

 1 /**
 2  * Create a cookie with the given name and value and other optional parameters.
 3  *
 4  * @example $.cookie('the_cookie', 'the_value');
 5  * @desc Set the value of a cookie.
 6  * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
 7  * @desc Create a cookie with all available options.
 8  * @example $.cookie('the_cookie', 'the_value');
 9  * @desc Create a session cookie.
10  * @example $.cookie('the_cookie', null);
11  * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
12  *       used when the cookie was set.
13  *
14  * @param String name The name of the cookie.
15  * @param String value The value of the cookie.
16  * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
17  * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
18  *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
19  *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
20  *                             when the the browser exits.
21  * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
22  * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
23  * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
24  *                        require a secure protocol (like HTTPS).
25  * @type undefined
26  *
27  * @name $.cookie
28  * @cat Plugins/Cookie
29  * @author Klaus Hartl/klaus.hartl@stilbuero.de
30  */
31 
32 /**
33  * Get the value of a cookie with the given name.
34  *
35  * @example $.cookie('the_cookie');
36  * @desc Get the value of a cookie.
37  *
38  * @param String name The name of the cookie.
39  * @return The value of the cookie.
40  * @type String
41  *
42  * @name $.cookie
43  * @cat Plugins/Cookie
44  * @author Klaus Hartl/klaus.hartl@stilbuero.de
45  */

这个Path问题困扰了我好几天,一不小心想明白了这个问题,所以留下笔记记一下!

posted @ 2012-09-26 10:40  网魂小兵  Views(3557)  Comments(2Edit  收藏  举报